6

私はrufus-schedulerを使用して定期的なタスクを実行していますが、テストしたいときにRailsコンソールに表示するのは非常に面倒です。コンソールを自動的に起動するときに、すべてのrufus-schedulerタスクを停止する簡単な方法はありますか?

スケジューラーを起動するコードでは、Railsコンソールにいることを確認できれば実行できません。または、コンソールの起動時にコールバックを実行する方法がある場合は、そこでシャットダウンすることもできます。

ありがとう

4

3 に答える 3

7

rufus-scheduler とdelayed-jobsを使用したときに同じ問題が発生しました。

私はこれを使用しました:

unless defined?(Rake) || defined?(IRB)
  # your code here
end

Rails 4でテスト済み

于 2013-10-17T02:48:08.417 に答える
6

Railsに基づいて、IRBコンソールまたはWebページかどうかを確認します:

unless self.private_methods.include? 'irb_binding'
  #put your rufus scheduling here
end
于 2011-06-13T17:01:18.750 に答える
1

ここの rufus-scheduler の改訂されたドキュメントに従って:

Ruby on Rails コンソールの実行時または rake タスクの呼び出し時に rufus-scheduler を起動させたくない場合は、初期化子を条件付きでラップできます。

unless defined?(Rails::Console) || File.split($0).last == 'rake'
  # your code here
end
于 2017-04-03T11:41:59.870 に答える