私の他のQは、この質問の複製であると彼らが言ったので閉じられました。
残念ながら、その答えはうまくいきませんでした。
基本的に、refresh_sitemapsを自動的に実行するようにWheneverを取得しようとしています。
私のcron.logファイルの興味深い点は、次のようになっています(奇妙な文字に注意してください)。
/usr/bin/ruby: No such file or directory -- °¯Ø (LoadError)
/usr/bin/ruby: No such file or directory -- ؽô (LoadError)
/usr/bin/ruby: No such file or directory -- à=Ù (LoadError)
これは私のschedule.rbの内容です:
env :PATH, '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
set :output, "#{path}/log/cron.log"
every 1.day, :at => '3:00 pm' do
rake "-s sitemap:refresh"
end
実行するcap refresh_sitemaps
と完全に機能しますが、Cronジョブとして単独で実行しようとすると機能しません。
私はルビーへの道が上記の道から正しいと確信しています。これは、SSHで接続して次を実行した場合の結果です。
user@example.com [~]# /usr/local/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
奇妙なことに、それはまだ/ usr / bin / rubyを探しているので、私の「パス」さえ見えないようです。
他の奇妙なことは、実際にそこに何かがあるということです....このsshコマンドによると:
user@example.com [~]# /usr/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
アップデート
私が実行するcrontab -l
と、これが私が得るものです。私が追加した追加のパスに注意してください。これは、この問題について見つけたmediatempleヘルプガイドからのものです(ただし、これに関する他の説明はありませんでした)。
# Begin Whenever generated tasks for: APPNAME
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
GEM_HOME=/usr/local/lib/ruby/gems/1.9.1
GEM_PATH=/usr/local/lib/ruby/gems/1.9.1
RUBYLIB=/usr/local/lib/ruby/site_ruby/1.9.1
10 17 * * * /bin/bash -l -c 'cd /home/USER/u/apps/APPNAME/releases/20120731204722 && RAILS_ENV=production bundle exec rake -s sitemap:refresh --silent >> /home/USER/u/apps/APPNAME/releases/20120731204722/log/cron.log 2>&1'
# End Whenever generated tasks for: APPNAME
SSHで接続した後、これを単独で実行しようとしましたが、正常に実行されます。
/bin/bash -l -c 'cd /home/USER/u/apps/APPNAME/releases/20120731204722 && RAILS_ENV=production bundle exec rake -s sitemap:refresh --silent