Class: Perl::Rack
Instance Method Summary collapse
- #call(env) ⇒ Object
- #clean_env(hash) ⇒ Object
-
#initialize(filename) ⇒ Rack
constructor
A new instance of Rack.
Constructor Details
Instance Method Details
#call(env) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/perl/rack.rb', line 11 def call(env) @interpreter.call(@app, {:ref => clean_env(env)}, :scalar) do |ret| value = ret.deref.value # Array status = value[0].value v1 = value[1].deref.value headers = Hash[*v1.map { |v| v.value }] body = value[2].deref.value.map { |v| v.value } [status, headers, body] end rescue => e puts "e: #{e.inspect}\n#{e.backtrace.join("\n")}" end |
#clean_env(hash) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/perl/rack.rb', line 28 def clean_env(hash) ret = hash.dup if defined?(PhusionPassenger) ret = ret.reject do |k,v| v.is_a?(PhusionPassenger::Utils::RewindableInput) end end ret.tap do |h| ["async.close"].each do |k| if h.has_key?(k) puts "Cannot handle env['#{k}'] (#{k} => #{h[k].inspect}), skipping" h.delete("async.close") end end end end |