为什么在delay_job中关闭了时区?

约瑟夫·海因琳

在我的Rails应用程序中,当我使用delay_job gem创建后台作业时,所有时间都偏移了6个小时。

我的理解是,delay_job使用您的时区,但这就像使用了错误的时区而不是从UTC到达-6小时(CST是我的时区),而是-12个小时!

这里有一些视图代码来说明。注意:

  • Time.now给了2014-03-04 23:26:55 -0600
  • Time.now.utc提供了2014-03-05 05:26:55 UTC
  • 但就在数秒前,delayed_job的想法是2014-03-04 17:26:53 -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_

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)'

显然我在几天前刚刚升级的Rails 3.2.13之后不推荐使用default_timezone设置

当我将其更改为仅设置本地时区时:

config.time_zone = 'Central Time (US & Canada)'
#config.active_record.default_timezone = 'Central Time (US & Canada)'

这解决了问题。保存时,所有活动记录对象似乎仍具有正确的时间,与delay_jobs一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在delay_job中关闭了时区?

来自分类Dev

在aws上运行delay_job时,为什么导致访问被拒绝?

来自分类Dev

避免在delay_job队列中重复工作

来自分类Dev

避免在delay_job队列中重复作业

来自分类Dev

rails docker中的delay_job无法正常工作

来自分类Dev

delay_job丢失方法

来自分类Dev

Rspec测试delay_job

来自分类Dev

冲突delay_job / sidekiq

来自分类Dev

delay_job进程默默退出

来自分类Dev

启动heroku delay_job工人

来自分类Dev

Rakefile用于Sinatra的delay_job

来自分类Dev

Heroku delay_job依赖项

来自分类Dev

Carrierwave和delay_job在上载目录中两次上载单个文件

来自分类Dev

Rails:after_create回调上的delay_job?

来自分类Dev

delay_job没有看到环境变量

来自分类Dev

如何优雅地重启delay_job消费者?

来自分类Dev

在视图中显示delay_job处理程序

来自分类Dev

更新run_at以获得delay_job队列

来自分类Dev

使用delay_job和tute / merit延迟徽章分配

来自分类Dev

通过delay_job将图像上传到heroku

来自分类Dev

为什么Django中unittest中的时区与时区不同?

来自分类Dev

为什么Postgres中的时区感知字段时区太幼稚

来自分类Dev

为什么 Javascript 中的 getTime() 与时区无关?

来自分类Dev

如何在ActiveJob中使用自定义的delay_job作业?

来自分类Dev

Rails 4-如何通过delay_job发送类似新闻通讯的电子邮件?

来自分类Dev

系统重新启动时delay_job工作的数量

来自分类Dev

Rails-异步发送所有带有delay_job的电子邮件

来自分类Dev

Thought Sphinx延迟增量可以使用命名的delay_job队列吗?

来自分类Dev

在Elastic Beanstalk上设置delay_job时如何获取修复“ require”错误

Related 相关文章

热门标签

归档