I have an application as simple as this:
require "sinatra"
get "/" do
raise "Oops!"
end
Since this is a debug environment, I'd expect to see a "RuntimeError: Oops!" show up in the browser. Instead, it seems Sinatra is crashing:
NoMethodError at / undefined method `join' for #<String:0x00000002b74bf0> Ruby /home/tomas/.rvm/.../gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb: in rescue in call, line 37 Web GET 127.0.0.1/
Backtrace in console:
RuntimeError - Oops!: test.rb:5:in `block in ' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `block in compile!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `[]' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `block (3 levels) in route!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:985:in `route_eval' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `block (2 levels) in route!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1006:in `block in process_route' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1004:in `catch' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1004:in `process_route' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:964:in `block in route!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:963:in `each' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:963:in `route!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1076:in `block in dispatch!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `block in invoke' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `catch' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `invoke' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1073:in `dispatch!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:898:in `block in call!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `block in invoke' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `catch' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1058:in `invoke' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:898:in `call!' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:886:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/logger.rb:15:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/commonlogger.rb:33:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:217:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:210:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/head.rb:13:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/methodoverride.rb:22:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb:21:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:180:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:2014:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `block in call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1788:in `synchronize' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/handler/webrick.rb:89:in `service' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' [2014-10-08 12:42:42] ERROR NoMethodError: undefined method `join' for #<String:0x007f52e055ce38> /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb:37:in `rescue in call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb:21:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:180:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:2014:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `block in call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1788:in `synchronize' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in `call' /home/tomas/.rvm/gems/ruby-2.0.0-p481@test/gems/rack-1.6.0.beta/lib/rack/handler/webrick.rb:89:in `service' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/httpserver.rb:138:in `service' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/httpserver.rb:94:in `run' /home/tomas/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread' localhost - - [08/Oct/2014:12:42:42 CEST] "GET / HTTP/1.1" 500 340
That's completely unhelpful to me. What's going on here?