52

1日に1回レーキタスクを実行するためにいつでも使用しようとしています。このエラーが発生しています

/bin/bash: bundle: command not found
/home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
        from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
        from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
        from /home/app/.rvm/gems/ruby-1.9.2-p180/bin/bundle:18:in `<main>'

これが私のcrontabです

# Begin Whenever generated tasks for: /home/af/www/app/releases/20120216172204/config/schedule.rb
PATH=/home/af/.rvm/gems/ruby-1.9.2-p180@global/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

0 0 * * * /bin/bash -l -c 'cd /home/af/www/app/releases/20120216172204 && rvm 1.9.1-p180; RAILS_ENV=production /home/af/.rvm/gems/ruby-1.9.2-p180/bin/bundle exec rake daily:stats --silent >> /home/af/www/app/releases/20120216172204/log/cron.log 2>&1'

# End Whenever generated tasks for: /home/af/www/app/releases/20120216172204/config/schedule.rb

なぜ機能しないのか途方に暮れています。コマンドを実行すると:

cd /home/af/www/app/releases/20120216172204 && rvm 1.9.1-p180; RAILS_ENV=production /home/af/.rvm/gems/ruby-1.9.2-p180/bin/bundle exec rake daily:stats --silent >> /home/af/www/app/releases/20120216172204/log/cron.log 2>&1

ここで何が起こっているのかわかりません。

4

16 に答える 16

65

また、次の行を schedule.rb ファイルの先頭に追加することで、PATH が確実に crontab で終了するようにすることもできます。

env :PATH, ENV['PATH']

https://groups.google.com/forum/#!msg/whenever-gem/yRLt3f2jrfU/Exu3xfCo8DAJ

上記の解決策がうまくいかない場合は、次を試してください。

env :GEM_PATH, ENV['GEM_PATH']
于 2012-06-15T20:11:50.330 に答える
4

何度も試した後、次のように動作するようです

ターミナルから次のように入力します

  1. crontab -eと入力します。これにより、編集用のcrontabが開きます。以下の2行が表示されます。

    # cron clears out environment variables, but Rubber.root/script/rubber uses
    # "rvm do default" to run, so no longer any need to setup ruby env vars here,
    # all we need is PATH
    PATH=/<path to bundle>/bundle/ruby/1.9.1/bin:/usr/local/rvm/gems
    

    # Begin Whenever generated tasks for: /mnt/wamjoke-production/releases/20120912$
    PATH=/<path to bundle>/shared/bundle/ruby/1.9.1/bin:/usr/local/rvm/gems
    
  2. PATHで始まる両方の行をコメントアウトします。

「bundleexecwhenever」コマンドを実行するときは常に上記の手順を実行してください。そしてそれは動作します。

PATHが環境を誤解させる理由がわかりません。

于 2012-09-12T11:17:44.313 に答える
3

私はこの問題が嫌いです-私もそれを解決しようとして何時間も費やしました。

私のために働くのは追加することです

RAILS_ENV=production; source /usr/local/rvm/scripts/rvm;

bundleコマンドの前。

于 2012-02-28T18:20:12.870 に答える
1

私は午後中ずっとこれをいじりましたが、より良い解決策を見つけることができませんでした。これが私が思いついたものです

bundle install --binstubs

そして実行します

bin/rake daily:stats
于 2012-02-28T17:51:58.253 に答える
1

crontab で GEM_HOME および GEM_PATH 環境変数を明示的に設定してみてください。gem list --localまたはgem environmentcron などを実行して、出力を確認することもできます。

于 2012-02-28T15:57:50.427 に答える
0

これは ENV['PATH'] が設定されていない問題です。これを修正する最も洗練された方法は、インストール直後に rvm 関連のスクリプトをパスに追加することです。次の行を .bashrc の先頭に追加します (.bashrc が非対話型シェルによってアクセスされた場合、行[ -z "$PS1" ] && returnはエラーをスローし、後続の行は実行されません。

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

明示的に PATH を設定し、環境変数をサリーしようとしないでください。

于 2013-07-25T12:31:23.273 に答える
0

rbenvご使用の方は付属のシムをご使用ください/home/username/.rbenv/shims/bundle

0 0 * * * /bin/bash -l -c 'cd /home/af/www/app/releases/20120216172204 && RAILS_ENV=production /home/af/.rbenv/shims/bundle exec rake daily:stats --silent >> /home/af/www/app/releases/20120216172204/log/cron.log 2>&1'
于 2020-10-18T09:46:13.293 に答える
-1

最新の修正では、capistrano deploy.rb に次の行を追加します。

set :whenever_command, "bundle exec whenever"
于 2013-08-08T08:41:46.093 に答える