Sha256: ed7fc6f7d87da3d2cc9b6d8dd1e44f3b8c030c3588766dbd8b76afd58d70fe35

Contents?: true

Size: 719 Bytes

Versions: 17

Compression:

Stored size: 719 Bytes

Contents

module DataMapper
  ##
  #
  # DataMapper's DependencyQueue is used to store callbacks for classes which
  # may or may not be loaded already.
  #
  class DependencyQueue
    def initialize
      @dependencies = {}
    end

    def add(class_name, &callback)
      @dependencies[class_name] ||= []
      @dependencies[class_name] << callback
      resolve!
    end

    def resolve!
      @dependencies.each do |class_name, callbacks|
        begin
          klass = Object.find_const(class_name)
          callbacks.each do |callback|
            callback.call(klass)
          end
          callbacks.clear
        rescue NameError
        end
      end
    end

  end # class DependencyQueue
end # module DataMapper

Version data entries

17 entries across 17 versions & 5 rubygems

Version Path
datamapper-dm-core-0.9.11 lib/dm-core/dependency_queue.rb
rpbertp13-dm-core-0.9.11.1 lib/dm-core/dependency_queue.rb
rpbertp13-dm-core-0.9.11.2 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.10 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.11 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.7 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.8 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.9 lib/dm-core/dependency_queue.rb
dm-core-0.9.11 lib/dm-core/dependency_queue.rb
dm-core-0.9.10 lib/dm-core/dependency_queue.rb
dm-core-0.9.7 lib/dm-core/dependency_queue.rb
dm-core-0.9.6 lib/dm-core/dependency_queue.rb
dm-core-0.9.8 lib/dm-core/dependency_queue.rb
dm-core-0.9.9 lib/dm-core/dependency_queue.rb
mack-data_mapper-0.8.2 lib/gems/dm-core-0.9.7/lib/dm-core/dependency_queue.rb
mack-data_mapper-0.8.3 lib/gems/dm-core-0.9.9/lib/dm-core/dependency_queue.rb
mack-data_mapper-0.8.3.1 lib/gems/dm-core-0.9.9/lib/dm-core/dependency_queue.rb