Sha256: 04b237f6d5ba7d8bdbd1c1d69f01368c5a6ebcc7d1487c3dbd3beb4f7428f3a8

Contents?: true

Size: 763 Bytes

Versions: 1

Compression:

Stored size: 763 Bytes

Contents

class PhenomenalRails::Middleware
  def initialize(app)
    @app=app
    @activation_conditions=Array.new
    Phenomenal::Feature.middleware=self
  end

  def add_condition(feature,&block)
    @activation_conditions.push([feature,block])
    sort_activation_conditions
  end

  def clear_activition_conditions
    @activation_conditions.clear
  end

  def call(env)
    before_call(env)
    @app.call(env)
  end

  def before_call(env)
    @activation_conditions.each do |feature_block|
      feature,block = feature_block
      if feature.active?
        block.call(env)
      end
    end
  end

  private
  def sort_activation_conditions
    @activation_conditions.sort! do |a,b|
      Phenomenal::Manager.instance.conflict_policy(a[0],b[0])
    end
  end 
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
phenomenal_rails-1.2.5 lib/phenomenal_rails/middleware.rb