2012-09-29 51 views
0

我在heroku上部署了一个小型sinatra应用程序。当我尝试访问该页面时,出现内部服务器错误消息。以下是我从heroku logsSinatra应用程序在heroku上抛出内部服务器错误

2012-09-29T17:24:18+00:00 app[web.1]: TypeError - can't convert nil into an exact number: 
2012-09-29T17:24:18+00:00 app[web.1]: /app/birthday_countdown.rb:9:in `+' 
2012-09-29T17:24:18+00:00 app[web.1]: web.rb:5:in `block in <main>' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1265:in `block in compile!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `[]' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:851:in `route_eval' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (2 levels) in route!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `process_route' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/birthday_countdown.rb:9:in `initialize' 
2012-09-29T17:24:18+00:00 app[web.1]: web.rb:5:in `new' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `each' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:936:in `dispatch!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `block in call!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:872:in `block in process_route' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:835:in `block (3 levels) in route!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:870:in `catch' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `block in invoke' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/rub 
y/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `catch' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:833:in `route!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:769:in `call!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:755:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/json_csrf.rb:17:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/base.rb:47:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:834:in `block in route!' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/xss_header.rb:22:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/logger.rb:15:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:129:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:921:in `invoke' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/head.rb:9:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:99:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `block in call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1471:in `synchronize' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:1389:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:78:in `pre_process' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/commonlogger.rb:20:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-protection-1.2.0/lib/rack/protection/path_traversal.rb:16:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:1060:in `block in spawn_threadpool' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:80:in `block in pre_process' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/sinatra-1.3.3/lib/sinatra/base.rb:136:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/eventmachine-0.12.10/lib/eventmachine.rb:1060:in `call' 
2012-09-29T17:24:18+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/connection.rb:78:in `catch' 
2012-09-29T17:24:18+00:00 app[web.1]: 180.215.44.250 - - [29/Sep/2012 17:24:18] "GET/HTTP/1.1" 500 30 0.0012 
2012-09-29T17:24:18+00:00 heroku[router]: GET debo-ka-birthday.herokuapp.com/ dyno=web.1 queue=0 wait=0ms service=8ms status=500 bytes=30 

我已经在我的应用程序下面的变化得到的,

@month = Time.at(Time.now.utc + Time.zone_offset('IST')).month 
@day = Time.at(Time.now.utc + Time.zone_offset('IST')).day 
@year = Time.at(Time.now.utc + Time.zone_offset('IST')).year 

@month = Time.now.month 
@day = Time.now.day 
@year = Time.now.year 

我这样做是因为我想根据是时间到印度标准时间,而不是在Heroku服务器上的时间。然而,这已经打破了应用程序,有人可以告诉我如何解决它?

回答

2

“IST” isn’t one of the timezones included in the time standard library,所以Time.zone_offset('IST')返回nil

可以使用实际为IST,而不是偏移:

Time.at(Time.now.utc + Time.zone_offset('+05:30')).month 

这可能是更容易使用localtime method

Time.now.localtime('+05:30') 

可以得到相同的结果。

+0

感谢您的回答,我想知道为什么在我的机器上运行而不会出现错误? – nikhil

+1

Ruby还会识别您的本地时区,因此如果您的机器设置为IST'zone_offset',则会识别它。 – matt

相关问题