about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-04-12 23:41:30 -0700
committerEric Wong <normalperson@yhbt.net>2009-04-12 23:43:00 -0700
commit18af4dbcc14eb7765bc021f94a444cc394864c26 (patch)
tree57a57621024ade521588db1089fae17485d90e86
parentdc60ca25aa72bcee0becc4cdebb1be67acc5b5b5 (diff)
downloadunicorn-18af4dbcc14eb7765bc021f94a444cc394864c26.tar.gz
Hopefully the world will just move to Rack faster
so we have less things to worry about.
-rw-r--r--lib/unicorn/app/old_rails.rb12
-rw-r--r--lib/unicorn/cgi_wrapper.rb6
2 files changed, 11 insertions, 7 deletions
diff --git a/lib/unicorn/app/old_rails.rb b/lib/unicorn/app/old_rails.rb
index bb9577a..4b74666 100644
--- a/lib/unicorn/app/old_rails.rb
+++ b/lib/unicorn/app/old_rails.rb
@@ -13,9 +13,15 @@ class Unicorn::App::OldRails
 
   def call(env)
     cgi = Unicorn::CGIWrapper.new(env)
-    Dispatcher.dispatch(cgi,
-        ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS,
-        cgi.body)
+    begin
+      Dispatcher.dispatch(cgi,
+          ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS,
+          cgi.body)
+    rescue Object => e
+      err = env['rack.errors']
+      out.write("#{e} #{e.message}\n")
+      e.backtrace.each { |line| out.write("#{line}\n") }
+    end
     cgi.out  # finalize the response
     cgi.rack_response
   end
diff --git a/lib/unicorn/cgi_wrapper.rb b/lib/unicorn/cgi_wrapper.rb
index 48771fd..bc622ea 100644
--- a/lib/unicorn/cgi_wrapper.rb
+++ b/lib/unicorn/cgi_wrapper.rb
@@ -71,11 +71,9 @@ class Unicorn::CGIWrapper < ::CGI
 
     # Capitalized "Status:", with human-readable status code (e.g. "200 OK")
     parseable_status = @head.delete(Status)
-    unless @status
-      @status ||= parseable_status.split(/ /)[0].to_i rescue 404
-    end
+    @status ||= parseable_status.split(/ /)[0].to_i rescue 500
 
-    [ @status, @head, [ @body.string ] ]
+    [ @status || 500, @head, [ @body.string ] ]
   end
 
   # The header is typically called to send back the header.  In our case we