Sha256: 60b9c639328bc6d809ebf11e923122423ba981b07616a43d7418e53ad6d3be68

Contents?: true

Size: 1.34 KB

Versions: 34

Compression:

Stored size: 1.34 KB

Contents

module Startback
  class Context
    #
    # Rack middleware that installs a particular context instance
    # on the Rack environment.
    #
    # Examples:
    #
    #     # Use the default context class
    #     Rack::Builder.new do
    #       use Startback::Context::Middleware
    #
    #       run ->(env){
    #         ctx = env[Startback::Context::Middleware::RACK_ENV_KEY]
    #         ctx.is_a?(Startback::Context) # => true
    #       }
    #     end
    #
    #     # Use a user defined context class
    #     Rack::Builder.new do
    #       use Startback::Context::Middleware, MyContextClass.new
    #
    #       run ->(env){
    #         ctx = env[Startback::Context::Middleware::RACK_ENV_KEY]
    #         ctx.is_a?(MyContextClass)     # => true (your subclass)
    #         ctx.is_a?(Startback::Context) # => true (required!)
    #       }
    #     end
    #
    class Middleware

      RACK_ENV_KEY = 'SAMBACK_CONTEXT'

      def initialize(app, context = Context.new)
        @app = app
        @context = context
      end
      attr_reader :context

      def call(env)
        env[RACK_ENV_KEY] ||= context.dup.tap{|c|
          c.original_rack_env = env.dup
        }
        @app.call(env)
      end

      def self.context(env)
        env[RACK_ENV_KEY]
      end

    end # class Middleware
  end # class Context
end # module Startback

Version data entries

34 entries across 34 versions & 3 rubygems

Version Path
startback-1.0.3 lib/startback/context/middleware.rb
startback-1.0.2 lib/startback/context/middleware.rb
startback-1.0.1 lib/startback/context/middleware.rb
startback-1.0.0 lib/startback/context/middleware.rb
startback-0.19.4 lib/startback/context/middleware.rb
startback-0.19.3 lib/startback/context/middleware.rb
startback-0.19.1 lib/startback/context/middleware.rb
startback-0.19.0 lib/startback/context/middleware.rb
startback-0.18.2 lib/startback/context/middleware.rb
startback-0.18.1 lib/startback/context/middleware.rb
startback-0.18.0 lib/startback/context/middleware.rb
startback-0.17.4 lib/startback/context/middleware.rb
startback-0.17.3 lib/startback/context/middleware.rb
startback-0.17.2 lib/startback/context/middleware.rb
startback-0.17.1 lib/startback/context/middleware.rb
startback-0.17.0 lib/startback/context/middleware.rb
startback-0.16.0 lib/startback/context/middleware.rb
startback-0.15.5 lib/startback/context/middleware.rb
startback-0.15.4 lib/startback/context/middleware.rb
startback-0.15.3 lib/startback/context/middleware.rb