Class: Startback::Context::Middleware
- Inherits:
-
Object
- Object
- Startback::Context::Middleware
- Defined in:
- lib/startback/context/middleware.rb
Overview
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, context_class: MyContextClass
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
Constant Summary collapse
- RACK_ENV_KEY =
'SAMBACK_CONTEXT'
- DEFAULT_OPTIONS =
{ context_class: Context }
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Class Method Summary collapse
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, options = {}) ⇒ Middleware
constructor
A new instance of Middleware.
Constructor Details
#initialize(app, options = {}) ⇒ Middleware
Returns a new instance of Middleware.
38 39 40 41 |
# File 'lib/startback/context/middleware.rb', line 38 def initialize(app, = {}) @app = app @options = DEFAULT_OPTIONS.merge( || {}) end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
42 43 44 |
# File 'lib/startback/context/middleware.rb', line 42 def @options end |
Class Method Details
.context(env) ⇒ Object
51 52 53 |
# File 'lib/startback/context/middleware.rb', line 51 def self.context(env) env[RACK_ENV_KEY] end |
Instance Method Details
#call(env) ⇒ Object
44 45 46 47 48 49 |
# File 'lib/startback/context/middleware.rb', line 44 def call(env) env[RACK_ENV_KEY] ||= [:context_class].h({}).tap{|c| c.original_rack_env = env.dup } @app.call(env) end |