Sha256: b86be6d0bce676554a975ee06af50af59a58f8a2af667f588ac6118f2ef6d1a5

Contents?: true

Size: 926 Bytes

Versions: 20

Compression:

Stored size: 926 Bytes

Contents

require 'dependency_detection/version'
module DependencyDetection

  module_function
  @@items = []
  def defer(&block)
    item = Dependent.new
    item.instance_eval(&block)
    @@items << item
  end

  def detect!
    @@items.each do |item|
      if item.dependencies_satisfied?
        item.execute
      end
    end
  end

  class Dependent
    attr_reader :executed
    def executed!
      @executed = true
    end

    attr_reader :dependencies

    def initialize
      @dependencies = []
      @executes = []
    end

    def dependencies_satisfied?
      !executed and check_dependencies
    end

    def execute
      @executes.each do |x|
        x.call
      end
    ensure
      executed!
    end

    def check_dependencies
      dependencies && dependencies.all? { |d| d.call }
    end

    def depends_on
      @dependencies << Proc.new
    end

    def executes
      @executes << Proc.new
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
newrelic_rpm-3.1.2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.2.beta2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.2.beta1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.1.beta3 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.1.beta2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.1.beta1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
ghazel-newrelic_rpm-3.1.0.1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.beta5 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.beta4 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.djlogging2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.djlogging vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.beta3 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.beta2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.0.1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.1.0.beta1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.0.0 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.0.0.beta2 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb
newrelic_rpm-3.0.0.beta1 vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb