Sha256: 5ec2bbd78b94907d0a9a213dc6ec881f1989fb54d5b664600d85d22ef857337f

Contents?: true

Size: 978 Bytes

Versions: 6

Compression:

Stored size: 978 Bytes

Contents

# Adds dependencies to manager
module Boson
  class Manager
    module MoreManager
      def load_dependencies(lib, options={})
        lib_dependencies[lib] = Array(lib.dependencies).map do |e|
          next if self.class.loaded?(e)
          load_once(e, options.merge(:dependency=>true)) ||
            raise(LoaderError, "Can't load dependency #{e}")
        end.compact
      end

      def lib_dependencies
        @lib_dependencies ||= {}
      end

      def during_after_load
        (lib_dependencies[@library] || []).each do |e|
          create_commands(e)
          self.class.add_library(e)
          puts "Loaded library dependency #{e.name}" if verbose
        end
      end
    end
    include MoreManager
  end

  # [*:dependencies*] An array of libraries that this library depends on. A library won't load
  #                   unless its dependencies are loaded first.
  class Library
    ATTRIBUTES << :dependencies
    attr_reader :dependencies
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
boson-more-0.3.1 lib/boson/more_manager.rb
boson-more-0.3.0 lib/boson/more_manager.rb
boson-more-0.2.2 lib/boson/more_manager.rb
boson-more-0.2.1 lib/boson/more_manager.rb
boson-more-0.2.0 lib/boson/more_manager.rb
boson-more-0.1.0 lib/boson/more_manager.rb