Rails cron每当gem出错时,bundle:command not found

时间:2014-10-22 14:06:55

标签: ruby-on-rails amazon-ec2 cron whenever

我已阅读此帖Whenever errors 并试图落实这些建议无济于事。我还在接收' / bin / bash:bundle:未找到命令'错误。 在Amazon 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计算: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的前缀,这让我们搞砸了。

如何在gem识别正确的PATH时获取schedule.rb /。

3 个答案:

答案 0 :(得分:15)

忘记cron文件中的PATH设置。设置PATH不起作用。

在config / schedule.rb中明确设置捆绑路径

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

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

答案 1 :(得分:0)

如果以上解决方案都不起作用,那么在没有任何其他设置的情况下这样做了

rvm cron setup

这将包括宝石的所有正确路径,以便您在计算机上执行此操作,并且您可以继续使用。

答案 2 :(得分:0)

如果使用rbenv,则路径为“ /home/YOUR_USER/.rbenv/shims/bundle”,因此您应该在schedule.rb ..:

的顶部写
set :bundle_command, "/home/YOUR_USER/.rbenv/shims/bundle exec"