class Scorpion::Rack::Middleware

Constants

ENV_KEY

Attributes

nest[R]

Public Class Methods

new( app, nest = nil ) click to toggle source
# File lib/scorpion/rack/middleware.rb, line 9
def initialize( app, nest = nil )
  @app  = app
  @nest = nest
end

Public Instance Methods

call( env ) click to toggle source
# 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

Private Instance Methods

free_scorpion( env ) click to toggle source
# File lib/scorpion/rack/middleware.rb, line 40
def free_scorpion( env )
  env[ENV_KEY].destroy
end
prepare_scorpion( scorpion, env ) click to toggle source
# File lib/scorpion/rack/middleware.rb, line 35
def prepare_scorpion( scorpion, env )
  scorpion.hunt_for Rack::Env, return: env
  scorpion
end