Ruby on rails 当gem不执行任务时

Ruby on rails 当gem不执行任务时,ruby-on-rails,path,crontab,whenever,whenever-capistrano,Ruby On Rails,Path,Crontab,Whenever,Whenever Capistrano,我建立了一个rails项目来使用gem。 现在我用Capistrano部署我的项目,任务很好地添加到了crontab列表中。 但当我只看到一行时: /bin/bash: bundle: command not found 所以我在网上读了几篇文章,所以我把它添加到了schedule.rb文件的顶部 env 'PATH', ENV['PATH'] 所以您应该认为问题已经解决,因为这将在crontab中添加下一行: PATH=/var/rails/alfa_paints/shared/bundl

我建立了一个rails项目来使用gem。 现在我用Capistrano部署我的项目,任务很好地添加到了crontab列表中。 但当我只看到一行时:

/bin/bash: bundle: command not found
所以我在网上读了几篇文章,所以我把它添加到了schedule.rb文件的顶部

env 'PATH', ENV['PATH']
所以您应该认为问题已经解决,因为这将在crontab中添加下一行:

PATH=/var/rails/alfa_paints/shared/bundle/ruby/1.9.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
因此,当命令执行时,您应该认为bundle在路径中。但还是没有运气。 我用一个单独的用户运行了命令和部署。因此,为了确保所有操作都与该用户一起运行,在本例中使用deployer。我假设部署人员的角色,并按照crontab中的指定运行命令。执行此命令时,我没有遇到任何问题

我已经没有选择了,我想知道是否还有其他人经历过这种奇怪的行为?我希望得到一些建议。 这是我的crontab中的输出:

# Begin Whenever generated tasks for: alfa_paints
 PATH=/var/rails/alfa_paints/shared/bundle/ruby/1.9.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

0 1 * * * /bin/bash -l -c 'cd /var/rails/alfa_paints/releases/20130127192223 && RAILS_ENV=production bundle exec rake alfa:cleanup --silent >> /var/rails/alfa_paints/shared/log/whenever.log 2>&1'

# End Whenever generated tasks for: alfa_paints

任何帮助,韦尔科姆

您需要在crontab中传入必要的环境变量

在crontab(crontab-e)的顶部添加这些行

(显然,您将修改变量的值以表示环境中的值)

(在本例中,我使用的是RVM)

PATH=/home/deploy/.rvm/gems/ruby-2.0.0-p247/bin:/home/deploy/.rvm/gems/ruby-2.0。0p247@global/bin:/home/deploy/.rvm/rubies/ruby-2.0.0p247/bin:/home/deploy/.rvm/bin:/usr/local/bin:/usr/bin:/usr/local/games:/usr/games:/usr/games:/usr/bin/:/home/deploy.rvm/bin

GEM_HOME=/HOME/deploy/.rvm/gems/ruby-2.0.0-p247

GEM_PATH=/home/deploy/.rvm/gems/ruby-2.0.0-p247/home/deploy/.rvm/gems/ruby-2.0.0-p247@global


MY_RUBY_HOME=/HOME/deploy/.rvm/rubies/RUBY-2.0.0-p247

您使用的是哪个shell?因为我已经看到每当在job命令中添加'bash-l-c'时。任何一套

设置:作业模板,无

或者如果您使用的是zsh,那么

set:job_模板,“zsh-l-c”:job“


这解决了我的问题

系统上是否实际安装了
bundle
命令,该命令位于
路径
变量中列出的目录之一?
哪个bundle
的输出是什么?是的,
哪个bindle
返回:/usr/local/bin/bundle。如果查看上面指定的路径,您将看到包含/usr/local/bin。当我运行bundle exec命令时,它会在那台机器上工作。你是否在Rails应用程序部署的同一用户下运行?@Niels我遇到了同样的问题,伙计。目前还没有解决方案,但你并不孤单。我打赌@rubious_dan是对的,你的应用部署的用户与使用/测试的用户不同。下面的链接使用快捷方式给出了相同的答案。