ruby-on-rails - 每当 gem 不执行任务时

标签 ruby-on-rails path crontab whenever whenever-capistrano

我建立了一个 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

因此,当命令执行时,您应该认为 b​​undle 位于路径中。但仍然没有运气。 我用一个单独的用户运行命令和部署。因此,为了确保一切都与该用户一起运行,在这种情况下是部署者。我承担了部署者的角色并按照 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

任何帮助welkom!

最佳答案

您需要在 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:/bin:/usr/local/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

关于ruby-on-rails - 每当 gem 不执行任务时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570304/

相关文章:

ruby-on-rails - Rails 中如何渲染链接

java - 如何正确修补 JAR 文件中的 Java 类?

ruby-on-rails - Rails 的良好实践

ruby-on-rails - 无法运行迁移。表不存在

javascript - Node js如何有前导句路径?

Oracle 中的 SQL 路由查找器 - 递归?

cron - 如何创建 cron 语句以运行多个小时

bash - 更改 Cronjob 路径

ruby-on-rails - 自动重启时如何运行 unicorn ,我得到找不到 gem 错误

ruby-on-rails - ruby on rails block 语法使用 & :