2013-12-20 30 views
1

我正在將Rails 3.2應用程序升級到Rails 4.1。每當我嘗試雖然啓動控制檯或服務器,我碰到過這樣的錯誤:未初始化的常量TZInfo :: InvalidTimezoneIdentifier(NameError) - Rails 4

C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/active_support 
/core_ext/time/zones.rb:70:in `rescue in find_zone!': uninitialized constant TZI 
nfo::InvalidTimezoneIdentifier (NameError) 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a 
ctive_support/core_ext/time/zones.rb:55:in `find_zone!' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a 
ctive_support/railtie.rb:20:in `block in <class:Railtie>' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
initializable.rb:30:in `instance_exec' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
initializable.rb:30:in `run' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
initializable.rb:55:in `block in run_initializers' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:150:in `block in tsort_each' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:183:in `block (2 levels) in each 
_strongly_connected_component' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:219:in `each_strongly_connected_ 
component_from' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:182:in `block in each_strongly_c 
onnected_component' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:180:in `each' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:180:in `each_strongly_connected_ 
component' 
     from C:/Ruby200/lib/ruby/2.0.0/tsort.rb:148:in `tsort_each' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
initializable.rb:54:in `run_initializers' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
application.rb:285:in `initialize!' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
railtie.rb:194:in `public_send' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/railties-4.1.0.beta1/lib/rails/ 
railtie.rb:194:in `method_missing' 
     from C:/sites/RailsApp/config/environment.rb:5:in `<top (required)>' 
     ... 

不能確定是什麼導致了它,並想知道如果任何人有任何意見。我在IRB嘗試這樣做,並沒有遇到任何問題(拋出一個錯誤,因爲它應該是):

irb(main):001:0> require 'active_support/core_ext/time/zones' 
=> true 
irb(main):002:0> Time.find_zone!('good') 
ArgumentError: Invalid Timezone: f 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a 
ctive_support/core_ext/time/zones.rb:71:in `rescue in find_zone!' 
     from C:/Ruby200/lib/ruby/gems/2.0.0/gems/activesupport-4.1.0.beta1/lib/a 
ctive_support/core_ext/time/zones.rb:55:in `find_zone!' 
     from (irb):3 
     from C:/Ruby200/bin/irb:12:in `<main>' 

的Gemfile包括:

ruby "2.0.0" 
gem "rails", "~> 4.1.0.beta1" 
gem 'tzinfo-data' 

編輯(一些更多的信息): 看起來好像包含gem'tzinfo-data'可能會搞砸一些東西?當gem位於gemfile中時,看起來好像在environment.rb的RailsApp::Application.initialize!調用期間'tzinfo'不會被需要。但是,當寶石被移除時,需求正在發生。

回答

8

在初始化應用程序environment.rb之前需要tzinfo gem修復了我的問題。並沒有真正解釋一切,但似乎工作

# adding this fixes the issue 
require 'tzinfo' 

# Initialize the rails application 
RailsApp::Application.initialize! 

編輯: 看來這是使用Rails的一個問題: https://github.com/rails/rails/issues/13553

-1

這爲我工作:

gem uninstall tzinfo 
#select 'All versions' 
gem install tzinfo 
rails c 
+0

哎,它確實....確保選擇「所有版本」 –

相關問題