私はrufus-schedulerを使用して定期的なタスクを実行していますが、テストしたいときにRailsコンソールに表示するのは非常に面倒です。コンソールを自動的に起動するときに、すべてのrufus-schedulerタスクを停止する簡単な方法はありますか?
スケジューラーを起動するコードでは、Railsコンソールにいることを確認できれば実行できません。または、コンソールの起動時にコールバックを実行する方法がある場合は、そこでシャットダウンすることもできます。
ありがとう
私はrufus-schedulerを使用して定期的なタスクを実行していますが、テストしたいときにRailsコンソールに表示するのは非常に面倒です。コンソールを自動的に起動するときに、すべてのrufus-schedulerタスクを停止する簡単な方法はありますか?
スケジューラーを起動するコードでは、Railsコンソールにいることを確認できれば実行できません。または、コンソールの起動時にコールバックを実行する方法がある場合は、そこでシャットダウンすることもできます。
ありがとう
rufus-scheduler とdelayed-jobsを使用したときに同じ問題が発生しました。
私はこれを使用しました:
unless defined?(Rake) || defined?(IRB)
# your code here
end
Rails 4でテスト済み
Railsに基づいて、IRBコンソールまたはWebページかどうかを確認します:
unless self.private_methods.include? 'irb_binding'
#put your rufus scheduling here
end
ここの rufus-scheduler の改訂されたドキュメントに従って:
Ruby on Rails コンソールの実行時または rake タスクの呼び出し時に rufus-scheduler を起動させたくない場合は、初期化子を条件付きでラップできます。
unless defined?(Rails::Console) || File.split($0).last == 'rake' # your code here end