LoginSignup
9
8

More than 5 years have passed since last update.

setlockを使ってwheneverの重複排除を実現する

Last updated at Posted at 2015-09-07

setlockとは

ファイルをロックすることで重複排除を実現するコマンドです。
daemontoolをインストールすると使えるようになります。
setlockを使って簡単に多重起動防止機能を実装する

実現方法

利用するjob_typeにsetlockの記述を追加します。
/tmpにタスク名のファイルを作り、それをロックすることで重複排除するようにしました。

config/schedule.rb
# original runner
# job_type :runner, "cd :path && bin/rails runner -e :environment ':task' :output"
# new runner
job_type :runner, "cd :path && setlock -n /tmp/:task bin/rails runner -e :environment ':task' :output"

every 1.minutes do
  runner 'SampleModel.sample_method'
end

これにより/tmp/SampleModel.sample_methodを通して重複排除が実現できます。

以上です。
whenever rails prohibit duplicate runとかで検索しても期待する答えに行き着かなかったので、共有しました。
誰かの役に立てれば幸いです。
もっと良い書き方があれば、教えてもらえると嬉しいです。

参考

setlockを使って簡単に多重起動防止機能を実装する
javan/whenever

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8