class Praxis::MiddlewareApp
Attributes
args[R]
setup_done[R]
target[R]
Public Class Methods
for(**args)
click to toggle source
Initialize the application instance with the desired args, and return the wrapping class.
# File lib/praxis/middleware_app.rb, line 8 def self.for(**args) Class.new(self) do @args = args @setup_done = false def self.name 'MiddlewareApp' end class << self attr_reader :args end class << self attr_reader :setup_done end def self.setup @setup_done = true Praxis::Application.instance.setup(**@args) end end end
name()
click to toggle source
# File lib/praxis/middleware_app.rb, line 12 def self.name 'MiddlewareApp' end
new(inner)
click to toggle source
# File lib/praxis/middleware_app.rb, line 31 def initialize(inner) @target = inner @setup_done = false end
setup()
click to toggle source
# File lib/praxis/middleware_app.rb, line 24 def self.setup @setup_done = true Praxis::Application.instance.setup(**@args) end
Public Instance Methods
call(env)
click to toggle source
# File lib/praxis/middleware_app.rb, line 36 def call(env) self.class.setup unless self.class.setup_done result = Praxis::Application.instance.call(env) if [404, 405].include?(result[0].to_i) && result[1]['X-Cascade'] == 'pass' last_body = result[2] last_body.close if last_body.respond_to? :close target.call(env) else # Respect X-Cascade header if it doesn't specify 'pass' result end end