在crontab错误中执行Rails任务

时间:2013-01-30 15:21:24

标签: ruby-on-rails cron whenever

使用lubuntu 12.10,ruby 1.9.3p374(不是RVM),Gem 1.8.23和Rails 3.2.11

我刚刚安装了Whenever gem来创建定期运行的任务。我创建了每1分钟运行一次的任务,并使用以下命令将其设置为运行:

whenever --update-crontab myproject --set environment=development

此命令将以下条目放在我的crontab中:

* * * * * /bin/bash -l -c 'cd /home/myuser/projects/myproject && script/rails runner -e development '\''FileImporter.execute'\'' >> /home/myuser/projects/myproject/log/cron_log.log 2>&1'

等了一段时间后,我在我的cron_log.log文件中看到了垃圾邮件,但有相同的例外:

/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in 'require: cannot load such file -- bundler/script (LoadError)

但是,当我在终端中手动运行以下命令时,一切正常:

/bin/bash -l -c 'cd /home/myuser/projects/myproject && script/rails runner -e development '\''FileImporter.execute'\'' >> /home/myuser/projects/myproject/log/cron_log.log 2>&1'

如果需要更多信息,请告诉我,我对rails / linux世界很陌生,所以我可能会留下一些重要的东西。

1 个答案:

答案 0 :(得分:1)

在这里找到类似问题的答案:why #!/usr/bin/env ruby doesn't work in crontab?

显然在执行cron作业时没有设置PATH,所以你必须在crontab中设置它。

运行echo $ PATH以查看PATH的设置,并在crontab文件的开头放置PATH = / my / path / values来解决问题。