複数のRakeタスクから呼び出されるモデルに依存しないメソッドの置き場所
Railsのプロジェクトで定期処理を実行するrakeのタスクを
lib/tasks/foo.rake
lib/tasks/bar.rake
lib/tasks/hoge.rake
のように配置し、多重起動を禁止するために
namespace: foo do
task :update_all, [:column] => :environment do |task, args|
process_count = `ps -ef | grep #{task.name} | grep -v grep | wc -l`.to_i
# whenever は `bash -c` を使って呼び出すため2個のプロセスが必ず出現する。だから3を使う
next if process_count >= 3
# do task
end
end
と書いているのですが、同様の処理はメソッド化したく、そのメソッドの置き場所をどこにするか迷っています。このような場合にはどこに置けば良いかという慣習はありますか?
追記
私の説明が不明瞭だったので具体的に書かせていただきますと
def task_already_running?(task)
process_count = `ps -ef | grep #{task.name} | grep -v grep | wc -l`.to_i
# whenever は `bash -c` を使って呼び出すため2個のプロセスが必ず出現する。だから3を使う
if process_count >= 3
end
というメソッドを定義して
namespace: foo do
task :update_all, [:column] => :environment do |task, args|
next if task_already_running?(task)
# do task
end
end
と書きたかったのですが、この task_already_running?
というメソッドを定義するファイルの置き場所・方法になんらかの慣習的に置き場があるか知りたいです。