【问题标题】:Whenever gem is not executing task每当 gem 不执行任务时
【发布时间】:2013-01-12 06:42:38
【问题描述】:

我设置了一个 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

欢迎任何帮助!

【问题讨论】:

  • bundle 命令是否实际安装在您的系统上的PATH 变量中列出的目录之一中? which bundle 的输出是什么?
  • 是的,which bindle 返回:/usr/local/bin/bundle。如果您查看上面指定的 PATH,您将看到 /usr/local/bin 包含在内。当我运行 bundle exec 命令时,它可以在该机器上运行。
  • 您是否在部署 Rails 应用的同一用户下运行?
  • @Niels 我遇到了同样的问题,伙计。尚无解决方案,但您并不孤单。
  • 我敢打赌 @rubious_dan 是对的,您的应用部署的用户与使用/测试时不同的用户不同。

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


【解决方案1】:

您使用的是哪个外壳?因为我看到每当在作业命令中添加“bash -l -c”。要么设置

设置:job_template,无

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

set :job_template, "zsh -l -c ':job'"

这解决了我的问题

【讨论】:

    【解决方案2】:

    您需要在 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

    【讨论】:

    猜你喜欢
    • 2011-06-24
    • 2021-07-18
    • 2013-12-29
    • 2017-04-26
    • 2011-06-04
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多