私のルビースクリプトでは、Gmailの宝石が必要でした:
require 'rubygems'
require 'gmail'
シェルで実行している場合は、問題なく動作します。
ruby my-script.rb
cronジョブに入れると、実行に失敗しました。
* * * * * cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb
ログには、Gmailのgemを読み込めないことが示されています。
/usr/local/rvm/rubies/ree-1.8.7-2011.03/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- gmail (LoadError)
まあ、私がこれを行うとき(cmdをbash -l -c'CMD'に入れてください):
* * * * * /bin/bash -l -c 'cd /to/script/directory;/usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby ./my-script.rb'
再び問題なく動作します。
なぜ?
ps.argが-l
bashをログインシェルにすることは知っていますが、それは何か違いがありますか?