class Startback::Context::Middleware
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
Constants
- DEFAULT_OPTIONS
- RACK_ENV_KEY
Attributes
options[R]
Public Class Methods
context(env)
click to toggle source
# File lib/startback/context/middleware.rb, line 51 def self.context(env) env[RACK_ENV_KEY] end
new(app, options = {})
click to toggle source
# File lib/startback/context/middleware.rb, line 38 def initialize(app, options = {}) @app = app @options = DEFAULT_OPTIONS.merge(options || {}) end
Public Instance Methods
call(env)
click to toggle source
# File lib/startback/context/middleware.rb, line 44 def call(env) env[RACK_ENV_KEY] ||= options[:context_class].h({}).tap{|c| c.original_rack_env = env.dup } @app.call(env) end