2013-08-01 2 views
0

Я использую Whenever gem с моим приложением Rails 3.2 на сервере Ubuntu. У меня есть месячная работа, которую я хочу запустить в первый день месяца, но она, похоже, не работает.Рельсы: Запланированное задание не работает

Я знаю, что код работает, потому что я запускал его из консоли на сервере, когда обнаружил, что он не запускается. У меня есть другие задания, которые работают чаще (ежечасно, ежедневно), но этот не запускался. Может кто-нибудь, пожалуйста, помогите мне определить, что я сделал неправильно?

# 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 

ответ

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 

Это трудно, потому что это выглядит как кронтаб вывод на сервере выглядит правильно.

+0

Спасибо. Я предполагаю, что это не вопрос Whenever, если Cron выглядит правильно. Я не думаю, что Cron никогда не выйдет из строя, если сервер находится в сети? Я не знаю, как это проверить, если я даже изменил, если не дождался еще месяца, тем более, что для меня уже работают более короткие длительности. – yellowreign