问题
I use rufus-scheduler to run some periodic tasks, but they are extremely annoying to have in the rails console when I just want to test things. Is there an easy way to stop all rufus-scheduler tasks when starting a console automatically?
In the code that starts the scheduler if i can check that i am just in a rails console I can not run them, or if there is a way to run some callbacks when the console starts I can also shut them down there.
Thanks
回答1:
Based on Rails check if IRB console or webpage:
unless self.private_methods.include? 'irb_binding'
#put your rufus scheduling here
end
回答2:
I had the same issue when I used rufus-scheduler and delayed-jobs.
I used this:
unless defined?(Rake) || defined?(IRB)
# your code here
end
Tested in Rails 4
回答3:
As per the revised documentation for rufus-scheduler here:
If you don't want rufus-scheduler to kick in when running the Ruby on Rails console or invoking a rake task, you can wrap your initializer in a conditional:
unless defined?(Rails::Console) || File.split($0).last == 'rake' # your code here end
来源:https://stackoverflow.com/questions/5890551/best-way-to-not-run-rufus-scheduler-when-starting-a-rails-console