My Rails 4 app config.eager_load = true将使用Ruby Time类而不是ActiveSupport :: TimeWithZone加载activerecord datetime字段

时间:2014-10-30 16:45:19

标签: ruby-on-rails activerecord activesupport

我刚刚将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时区再次起作用。 ..但我还是无法解释为什么在预加载类时行为会发生变化。有什么想法吗?

0 个答案:

没有答案