Rails cron每当gem出错时,bundle:命令找不到



我读过这篇文章,每当出现错误时,我都会尝试执行这些建议,但都无济于事。我仍然收到"/bin/bash:bundle:commandnot found"错误。在亚马逊EC2上。

哪个红宝石

/usr/local/bin/ruby

哪个捆绑商

/usr/local/bin/bundler

schedule.rb

env :PATH, ENV['PATH']
require File.expand_path('../application', __FILE__)
set :output, "log/cron_log.log"
every 1.minutes do
  rake "calculate:calculate"
end

crontab-e

          • /bin/bash-l-c'cd/srv/www/myapp/releases/20141022032959&RAILS_ENV=开发包exec-rake-cacule:calculate--silent>>log/cron_log.log 2>&1'

tail-f log/cron_log.log

/bin/bash: bundle: command not found

当我将命令从crontab中复制出来并直接运行时,一切都很好(cd/srv/www/myapp/releases/20141022032959&RAILS_ENV=开发包exec-rake-calculate:calculate--silent>>log/cron_log.log 2>&1)。是/bin/bash的准备工作把事情搞砸了。

如何让schedule.rb/wheny-gem识别正确的PATH。

忘记cron文件中的PATH设置。设置PATH无效。

在config/schedule.rb 中显式设置捆绑路径

set :bundle_command, "/usr/local/bin/bundle exec"

编辑:添加exec,以便任务可以运行

如果上面的解决方案都不起作用,那么在没有任何额外设置的情况下,我就做到了

rvm cron setup

这将包括宝石的所有正确路径,所以你可以在你的机器上这样做,你就可以走了。

如果使用rbenv,则路径为"home/YOUR_USER/.rbenv/垫片/捆";,所以你应该写在日程的最前面

set :bundle_command, "/home/YOUR_USER/.rbenv/shims/bundle exec"