我正在努力让一个cron工作运行。这就是我所拥有的:
*/1 * * * * cd /home/jose/work/Cronox/lib/tasks/rake wines:destroy_wines >> /home/jose/crontab_errors.txt
我的任务如下:
namespace :wines do
desc "delete all wines"
task :destroy_wines => :environment do |t|
Wine.delete_all!
end
end
如果我使用此命令: tail -f / var / log / syslog 我可以看到这个:
(jose) CMD (cd /home/jose/work/Cronox/lib/tasks/rake wines:destroy_wines >> /home/jose/crontab_errors.txt)
每一分钟,但它什么都不做。我也在使用 rvm 这与它有什么关系吗?
还有一件事:手动执行时,任务正常。
我缺少什么,
请帮助我!答案 0 :(得分:3)
我使用了与Jeff的答案类似的东西,但是我必须调用bundle exec
来使rake任务正常运行,为此我必须使用rvm do
命令。完整的cronjob看起来像这样:
*/15 * * * * cd /path/to/rails/app && /path/to/rvm 1.9.3-p392 do bundle exec rake RAILS_ENV=production my:rake:task >> tasks.log 2>&1
答案 1 :(得分:3)
我创建了一个示例,这是命令行:
/bin/bash -l -c 'cd /home/myusername/rails_apps/yourapplicationname && RAILS_ENV=production bundle exec rake admin:update_folios --trace --silent >> log/error_updating_folios.log'
您可以在此处找到完整指南:
http://heridev.com.mx/ruby/how-to-create-a-cron-job-for-ruby-on-rails-application-in-a-server-wich-uses-cpanel/
干杯!
答案 2 :(得分:2)
你没有调用rake,你只需要更改目录。尝试
*/1 * * * * cd /home/jose/work/Cronox/ && rake wines:destroy_wines >> /home/jose/crontab_errors.txt