Rails delayed_job正在使用不同的时区

时间:2018-02-25 05:48:30

标签: ruby-on-rails delayed-job

所以我试图找出为什么我的延迟工作没有运行,我想我可能有一个想法。

我不确定它是时差还是现在发生了什么,但这是我注意到的第一个问题。

irb(main):002:0> Delayed::Job.first
  Delayed::Backend::ActiveRecord::Job Load (0.6ms)  SELECT  `delayed_jobs`.* FROM `delayed_jobs` ORDER BY `delayed_jobs`.`id` ASC LIMIT 1
=> #<Delayed::Backend::ActiveRecord::Job id: 8, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMethod\nobject...", last_error: nil, run_at: "2018-02-25 05:50:00", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2018-02-25 05:40:47", updated_at: "2018-02-25 05:40:47">

在上面的命令输出中,它显示作业将在02/25/18 at 5:50 AM运行。但是,在Rails应用程序中,我安排这项工作将于02/24/18在美国中部时间晚上11:50运行。

如果我从Rails控制台运行Time.now,这是我得到的输出:

irb(main):003:0> Time.now
=> 2018-02-24 23:46:15 -0600

有趣的是,当我运行Delayed::Job.all命令时,我可以看到created_atupdated_at属性位于错误的时区或其他位置。那么Delayed :: Job仅根据Time.now配置的内容运行吗?

在我的config/application.rb文件中,我确实将时区配置为Central,如下所示:

[nutella:~/rails_apps/instaweb]$ cat config/application.rb| grep -i time                                                                                       11:49PM/02.24
    config.time_zone = "Central Time (US & Canada)"

为什么延迟工作没有运行有点困惑,任何帮助都会受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

尝试将此行添加到application.rb:

.car

答案 1 :(得分:0)

所以我浏览了故障排除指南,看起来我没有实际启动delayed_job进程。现在我能够解决这个问题,一切都很顺利。我感谢大家的帮助!