Rails:计划的作业未运行

时间:2013-08-01 20:25:30

标签: ruby-on-rails cron whenever

我在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

1 个答案:

答案 0 :(得分:0)

看起来这是一个慢性解析问题。我这两篇博文可能会帮助您解决问题: http://bjhess.com/blog/ruby_whenever_and_day_of_month_crontab_syntax_/ https://github.com/javan/whenever/issues/13

这可能有效:

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输出看起来是正确的。