* * * * * user /bin/bash -lc 'cd /path/to/program-dir && ruby program.rb'
設定が適切ならこれで問題なく動くのですが、以下のように怒られる事があります。
- bundlerでgemをインストールしたはずなのにライブラリが見つからない
- bundlerでgemをインストールしたはずなのにバージョンが違うと言われる
これはbundlerでgemの保存場所を指定していない場合に起きやすい問題です。 bundlerは保存場所を何も指定しないとgemをシステムに保存しますが、cronから呼び出す際には保存場所が指定されていないと読み出しに失敗したり、バージョン不整合が起きます。 この問題はbundlerの実行時に--pathオプションを付ける事で解決します。
bundle install --path vendor/bundle
bundlerの保存場所を明示するとその設定は.bundle/configに記憶されるため、cronで実行した際にも読み出し位置が明確になります。エラーも消えるはずです。bundle installする際は、忘れずに--pathオプションを付けましょう。
0 件のコメント:
コメントを投稿