ruby-on-rails – 为什么在delayed_job中关闭时区?
发布时间:2020-12-16 21:02:24 所属栏目:百科 来源:网络整理
导读:在我的Rails应用程序中,当我使用 delayed_job gem创建后台作业时,我将所有时间偏移6小时. 我的理解是delayed_job uses your timezone,但它就像是使用了错误的.而不是距离UTC(CST是我的时区)-6小时,这是-12小时! 这里有一些视图代码来说明.注意: Time.now给
在我的Rails应用程序中,当我使用
delayed_job gem创建后台作业时,我将所有时间偏移6小时.
我的理解是delayed_job uses your timezone,但它就像是使用了错误的.而不是距离UTC(CST是我的时区)-6小时,这是-12小时! 这里有一些视图代码来说明.注意: > Time.now给出2014-03-04 23:26:55 -0600 我的看法: #delayed_jobs/index.html.erb <h1>All Background Jobs</h1> <p>The time now is: <%= Time.now %> </p> <p>The time UTC is: <%= Time.now.utc %> </p> <table> <tr> <th>ID</th> <th>Queue</th> <th>Created At</th> <th>Run At</th> </tr> <% @delayed_jobs.each do |dj| %> <tr> <td><%= dj.id %></td> <td><%= dj.queue %></td> <td><%= dj.created_at %></td> <td><%= dj.run_at %></td> </tr> <% end %> </table> 输出: 我可以通过以下三种方式创建作业,并获得相同的created_at时间: MyClass.delay.foo MyClass.delay(run_at: 0.minutes.from_now).foo MyClass.delay(run_at: 0.minutes.from_now.getutc).foo 我的配置有: #config/application.rb config.time_zone = 'Central Time (US & Canada)' config.active_record.default_timezone = 'Central Time (US & Canada)' 解决方法
问题出在我的config / application.rb中,如@rainkinz建议的那样,特别是第二行:
config.time_zone = 'Central Time (US & Canada)' config.active_record.default_timezone = 'Central Time (US & Canada)' 显然是default_timezone setting is deprecated after Rails 3.2.13,我刚刚从几天前升级了. 当我将其更改为仅设置了本地时区时: config.time_zone = 'Central Time (US & Canada)' #config.active_record.default_timezone = 'Central Time (US & Canada)' 这解决了这个问题.保存时,所有活动记录对象似乎仍具有正确的时间,delayed_jobs也是如此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |