我刚刚将Rails 4应用程序推送到新的生产环境,并注意到时区显示为UTC区域。它们已经在PST的所有其他环境中正确显示,我在application.rb中设置了应用程序config.time_zone。 进一步分类这个问题,我发现,在生产环境中,时间戳属于Ruby类Time,而不是ActiveSupport :: TimeWithZone
my_record.start_at.is_a?(ActiveSupport::TimeWithZone)
=> false
但是,在测试环境中,所归属的时间戳是类ActiveSupport :: TimeWithZone
my_record.start_at.is_a?(ActiveSupport::TimeWithZone)
=> true
这是相同的代码库,vm是从测试中克隆的,因此软件版本是相同的。我检查了production.rb文件,但没有看到任何改变这种行为的事情。 我有
require 'rails/all'
application.rb中的应该在应用程序启动时加载所有活动的支持模块
应用程序的其余部分似乎工作正常,因此必须加载其他活动支持类。有人可以帮助我找出这个特定环境中缺少或改变的内容吗?
感谢。
更新: 我决定一次更改我的production.rb设置,发现这是由
引起的config.eager_load = true
当我将此值更改为false时 - ActiveSupport时区再次起作用。 ..但我还是无法解释为什么在预加载类时行为会发生变化。有什么想法吗?