Sha256: 5a6d2a40fad3176ccfd2ea20e0be7bdbbd50a54b60fa92d5acc56402f2da8490

Contents?: true

Size: 706 Bytes

Versions: 5

Compression:

Stored size: 706 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 = Hash.new { |h,k| h[k] = [] }
    end

    def add(class_name, &callback)
      @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

5 entries across 5 versions & 3 rubygems

Version Path
joevandyk-dm-core-0.9.6 lib/dm-core/dependency_queue.rb
sam-dm-core-0.9.6 lib/dm-core/dependency_queue.rb
dm-core-0.9.5 lib/dm-core/dependency_queue.rb
dm-core-0.9.3 lib/dm-core/dependency_queue.rb
dm-core-0.9.4 lib/dm-core/dependency_queue.rb