在应用程序中设置的config.time_zone升级到Rails 3后,Time.zone为nil

时间:2012-12-07 22:42:41

标签: ruby-on-rails-3 timezone

将应用程序从Ruby 1.8.6 / Rails 2.3.5升级到Ruby 1.8.7 / Rails3.0.11。

在application.rb中,config语句已经(从environment.rb)移动到:

module AppName
class Application < Rails::Application
...
end
end

阻止,包括声明:

config.time_zone = 'Eastern Time (US & Canada)'

在旧的environment.rb文件中,还有一些代码用于初始化一些常量,我已将其移至application.rb中。我已经尝试过模块/类块之后(就像之前一样)并在其中,但是以下语句:

Time.zone.parse(external_config_date)

产生了这个错误:

  

config / application.rb:49:nil的未定义方法`parse':NilClass(NoMethodError)

我对此感到有些困惑(正如Rails日期/时间经常发生的那样: - /);看起来Time.zone似乎是一种可以接受默认时区的方法,但我也看到它说'zone'是Time的实例方法,而不是类方法。

对此的任何见解(或关于如何进一步排除故障的想法)都非常感谢!

1 个答案:

答案 0 :(得分:0)

看起来将额外的配置代码从environment.rb移动到application.rb是我的错误。 'time.zone.parse'似乎是一个Rails附加组件,它还没有在application.rb中启用。在行

之后将配置代码移回environment.rb的底部
AppName::Application.initialize!

让它发挥作用。