2012-03-01 19 views
1

我有在一個文件中定義一個非常簡單的機架應用程序稱爲config.ru的Heroku +機架式應用+主動支持時區

require './environment' 

class Ryan 
    def self.call(env) 
    [200, { "Content-Type" => "text/html" }, [Time.zone.now]] 
    end 
end 

run Ryan 

environment.rb,有這樣的:

require 'active_support/core_ext/time/zones' 
require 'active_support/time_with_zone' 
require 'active_support/core_ext/time/conversions' 

Time.zone = 'Sydney' 

而在Gemfile

source "http://rubygems.org" 

gem 'rack' 
gem 'tzinfo' 
gem 'activesupport' 

當我在本地運行它,它的工作原理!巨大的成功。

然而,當我這個應用程序部署的Heroku它完全與這個顯示日誌失敗:

2012-03-01T02:01:55+00:00 app[web.1]: [2012-03-01 02:01:55] INFO ruby 1.9.2 (2011-07-09) [x86_64-linux] 
2012-03-01T02:01:55+00:00 app[web.1]: [2012-03-01 02:01:55] INFO WEBrick 1.3.1 
2012-03-01T02:01:55+00:00 app[web.1]: [2012-03-01 02:01:55] INFO WEBrick::HTTPServer#start: pid=1 port=27368 
2012-03-01T02:01:56+00:00 heroku[web.1]: State changed from starting to up 
2012-03-01T02:01:57+00:00 app[web.1]: [2012-03-01 02:01:57] ERROR NoMethodError: undefined method `now' for nil:NilClass 
2012-03-01T02:01:57+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service' 
2012-03-01T02:01:57+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
2012-03-01T02:01:57+00:00 app[web.1]: /app/config.ru:8:in `call' 
2012-03-01T02:01:57+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
2012-03-01T02:01:57+00:00 app[web.1]: /usr/local/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 

所以......有什麼dealio這裏? Heroku是否在不同的過程中運行它,這就是爲什麼它不能被發現?

+0

什麼Heroku堆棧是這個*不*運行? – jipiboily 2012-03-01 02:29:44

+0

沒關係,似乎像香草雪松 – jipiboily 2012-03-01 02:46:28

回答

0

奇怪,這並沒有爲我在本地運行, 紅寶石1.9.2p180和寶石,

 
i18n (0.6.0) 
multi_json (1.1.0) 
activesupport (3.2.1) 
rack (1.4.1) 
tzinfo (0.3.31) 
bundler (1.0.18) 

這一樣,在您的本地環境

 
    require './environment' 

    class Ryan 
    def self.call(env) 
     Time.zone = "Sydney" 
     [200, { "Content-Type" => "text/html" }, [Time.zone.now.to_s]] 
    end 
    end 

    run Ryan 

更多信息可以在一些啓發爲什麼它發生。

+0

紅寶石1.9.2(2011-07-09)==紅寶石1.9.2p290 AFAIK – jipiboily 2012-03-01 02:47:38

+0

我認爲堆棧跟蹤是heroku的..不是瑞安的本地 – 2012-03-01 03:12:22

+0

我知道,但我認爲他的運行相同一個地方:) – jipiboily 2012-03-01 03:45:08

0

這將使用Thin而不是WEBrick。

添加薄寶石你Gemfile然後創建一個Procfile

web: bundle exec thin start -p $PORT

它爲我的雪松堆棧。

至於爲什麼它可以使用Thin而不是WEBrick:我沒有線索!

http://ryan-cedar.herokuapp.com/