使用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世界很陌生,所以我可能会留下一些重要的东西。
答案 0 :(得分:1)
在这里找到类似问题的答案:why #!/usr/bin/env ruby doesn't work in crontab?
显然在执行cron作业时没有设置PATH,所以你必须在crontab中设置它。
运行echo $ PATH以查看PATH的设置,并在crontab文件的开头放置PATH = / my / path / values来解决问题。