【问题标题】:Rails: Scheduled Job not RunningRails:计划的作业未运行
【发布时间】:2013-08-01 20:25:29
【问题描述】:

我在 Ubuntu 服务器上将 Whenever gem 与我的 Rails 3.2 应用程序一起使用。我有一个月度工作,我想在每个月的第一天运行,但它似乎没有用。

我知道代码有效,因为当我发现它没有运行时,我从服务器上的控制台运行了它。我还有其他更频繁地运行(每小时、每天)的工作,但这个没有运行。有人可以帮我确定我做错了什么吗?

# schedule.rb
every 1.month, :at => "beginning of the month at 3am" do
  rake "users:update_monthly"
end

# lib/schedule.rake
namespace :users do

  task :update_monthly => :environment do
    User.update_monthly
  end

end

当我在服务器上运行crontab -l 时:

# Begin Whenever generated tasks for: whenever_schedule
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/articles

0 3 1 * * /bin/bash -l -c 'cd /var/deploy/foo/web_head/releases/20130801200106 && RAILS_ENV=production bundle exec rake users:update_monthly --silent'

# End Whenever generated tasks for: whenever_schedule

【问题讨论】:

    标签: ruby-on-rails cron whenever


    【解决方案1】:

    看起来这是一个慢性解析问题。

    这可能有效:

    every 1.month, :at => 'January 1st 3:00am' do
      rake "users:update_monthly"
    end
    

    或者这个:

    every 1.month, :at => 'start of the month at 9am' do
      rake "users:update_monthly"
    end
    

    这很难,因为它看起来像服务器上的 crontab 输出看起来正确。

    【讨论】:

    • 谢谢。如果 Cron 看起来正确,我想这不是一个 When 问题。如果服务器在线,我认为 Cron 不会触发失败?我不知道如果我什至更改时如何测试它,而无需再等一个月,特别是因为较短的持续时间已经为我工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2015-08-03
    • 2020-10-09
    • 2018-02-28
    相关资源
    最近更新 更多