0

使用 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 世界很陌生,所以我可能遗漏了一些重要的东西。

4

1 回答 1

1

在这里找到了类似问题的答案:为什么 #!/usr/bin/env ruby​​ 在 crontab 中不起作用?

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

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

于 2013-02-01T22:49:53.003 回答