3

私は使っている:

Ruby     1.9.3
whenever 0.9.4
Rails    3.2
and capistrano/whenever extension.

展開が行われるたびに、各展開の後にエントリが crontab ファイルに追加されます。crontab -lschedule.rb には 8 つの cron エントリがあるため、5 回の展開以降、 には 40 のエントリがあります。リリースごとに異なるエントリがあります。デフォルトでエントリを上書きすべきではありませんか?

ファイルに記載されるたびにエントリを再作成しschedule.rbます。

4

2 に答える 2

4

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」パスではなく「現在の」パスが含まれています。

これは必要ないと思いますが、しばらく問題を解決しようとした後、これが最終的な結果になりました。

于 2017-05-27T16:45:06.440 に答える