3

いつでもジェムを使用するようにレールプロジェクトをセットアップしました。これで、Capistrano を使用してプロジェクトをデプロイすると、タスクが crontab リストに適切に追加されました。しかし、1行しか表示されない場合:

/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

したがって、コマンドが実行されたときにバンドルがパスにあると考える必要があります。しかし、まだ運がありません。別のユーザーでコマンドと展開を実行しました。そのため、すべてがそのユーザー (この場合は 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

どんな助けでも歓迎します!

4

2 に答える 2

1

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/ビン/:/ホーム/デプロイ/.rvm/ビン

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

于 2014-02-22T17:45:12.810 に答える
1

どのシェルを使用していますか? ジョブコマンドに「bash -l -c」を追加するたびに見たので。どちらかセット

セット:job_template、nil

またはzshを使用している場合

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

これは私の問題を解決しました

于 2014-04-03T12:08:05.053 に答える