Class: Arturo::Middleware
- Inherits:
-
Object
- Object
- Arturo::Middleware
- Defined in:
- lib/arturo/middleware.rb
Overview
A Rack middleware that requires a feature to be present. By default,
checks feature availability against an arturo.recipient object
in the env. If that object is missing, this middleware always fails,
even if the feature is available for everyone.
Usage
use Arturo::Middleware, :feature => :foo
Options
-
feature -- the name of the feature to require, as a Symbol; required
-
recipient -- the key in the
envhash under which the feature recipient can be found; defaults to "arturo.recipient". -
on_unavailable -- a Rack-like object (has
#call(Hash) -> [status, headers, body]) that is called when the feature is unavailable; defaults to returning[ 404, {}, ['Not Found'] ].
Constant Summary collapse
- MISSING_FEATURE_ERROR =
"Cannot create an Arturo::Middleware without a :feature"- DEFAULT_RECIPIENT_KEY =
'arturo.recipient'- DEFAULT_ON_UNAVAILABLE =
lambda { |env| [ 404, {}, ['Not Found'] ] }
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.
29 30 31 32 33 34 35 |
# File 'lib/arturo/middleware.rb', line 29 def initialize(app, = {}) @app = app @feature = [:feature] raise ArgumentError.new(MISSING_FEATURE_ERROR) unless @feature @recipient_key = [:recipient] || DEFAULT_RECIPIENT_KEY @on_unavailable = [:on_unavailable] || DEFAULT_ON_UNAVAILABLE end |
Instance Method Details
#call(env) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/arturo/middleware.rb', line 37 def call(env) if enabled_for_recipient?(env) @app.call(env) else fail(env) end end |