我设置了一个 Rails 项目来使用Whenever 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 在路径中。但仍然没有运气。我使用单独的用户运行命令和部署。因此,为了确保一切都与该用户一起运行,在这种情况下是部署者。我承担了部署者的角色并按照 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
任何帮助欢迎!