Sha256: fc6523c6ef1740c8ac3cb61f1e2ea408495419ebea17f47cc339ef44ed1b3bf6

Contents?: true

Size: 714 Bytes

Versions: 36

Compression:

Stored size: 714 Bytes

Contents

module Rack
  class Callbacks
    def initialize(&block)
      @before = []
      @after  = []
      instance_eval(&block) if block_given?
    end

    def before(middleware, *args, &block)
      if block_given?
        @before << middleware.new(*args, &block)
      else
        @before << middleware.new(*args)
      end
    end

    def after(middleware, *args, &block)
      if block_given?
        @after << middleware.new(*args, &block)
      else
        @after << middleware.new(*args)
      end
    end

    def run(app)
      @app = app
    end

    def call(env)
      @before.each {|c| c.call(env) }

      response = @app.call(env)

      @after.inject(response) {|r, c| c.call(r) }
    end
  end
end

Version data entries

36 entries across 36 versions & 8 rubygems

Version Path
rack-contrib-2.2.0 lib/rack/contrib/callbacks.rb
rack-contrib-2.1.0 lib/rack/contrib/callbacks.rb
rack-contrib-2.0.1 lib/rack/contrib/callbacks.rb
rack-contrib-2.0.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.8.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.7.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.6.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.5.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.4.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.3.0 lib/rack/contrib/callbacks.rb
rack-contrib-1.2.0.39.g17d21b4 lib/rack/contrib/callbacks.rb
rack-contrib-1.2.0 lib/rack/contrib/callbacks.rb
cavalle-rack-contrib-1.0.0 lib/rack/contrib/callbacks.rb
rack-rack-contrib-0.9.1 lib/rack/contrib/callbacks.rb
rack-rack-contrib-0.9.2 lib/rack/contrib/callbacks.rb
tricycle-rack-contrib-0.9.3 lib/rack/contrib/callbacks.rb
rack-contrib-1.1.0 lib/rack/contrib/callbacks.rb
corntrace-rack-contrib-1.0.2.3 lib/rack/contrib/callbacks.rb
corntrace-rack-contrib-1.0.2.2 lib/rack/contrib/callbacks.rb
corntrace-rack-contrib-1.0.2.1 lib/rack/contrib/callbacks.rb