Class: Scorpion::Rack::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/scorpion/rack/middleware.rb

Constant Summary collapse

ENV_KEY =
"scorpion.instance".freeze

Instance Method Summary collapse

Constructor Details

#initialize(app, nest = nil) ⇒ Middleware

Returns a new instance of Middleware.



9
10
11
12
# File 'lib/scorpion/rack/middleware.rb', line 9

def initialize( app, nest = nil )
  @app  = app
  @nest = nest
end

Instance Method Details

#call(env) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/scorpion/rack/middleware.rb', line 14

def call( env )
  # If we don't have a nest yet, build one from the configured global
  # scorpion.
  @nest ||= Scorpion.instance.build_nest

  conceived = false
  env[ENV_KEY] ||=
    begin
      conceived = true
      prepare_scorpion( nest.conceive, env )
    end

  @app.call(env).tap do
    free_scorpion( env ) if conceived
  end
end