cron ジョブを crontab ファイルに追加するたびに、各 cron ジョブが capistrano リリース ディレクトリへのパスを含むコメント行で区切られていることがわかりました...次のようなものです。
# Begin Whenever generated tasks for: /home/path/www/to/releases/2070527160502/config/schedule.rb
( crontab -e で生の crontab ファイルを見て、いつでもそこに何が入っているかを確認できます)
次の展開が行われるときはいつでも、コメントで区切られた cron ジョブがあるかどうかを確認しますが、新しいリリース番号を使用します。それが見つからないので、新しいジョブを crontab ファイルに追加します。
この問題に対する私の回避策は、deploy.rb で update_crontab タスクを指定し、次のように schedule.rb への明示的なパスを指定することです。
namespace :deploy do
task :update_crontab do
on roles(:all) do
within current_path do
execute :bundle, :exec, :whenever, "--update-crontab", "~/path/to/current/config/schedule.rb"
end
end
end
end
after 'deploy:symlink:release', 'deploy:update_crontab'
したがって、crontab ファイルのコメント区切り文字には、「releases/nnnnnnnnnnn」パスではなく「現在の」パスが含まれています。
これは必要ないと思いますが、しばらく問題を解決しようとした後、これが最終的な結果になりました。