What I am trying to accomplish is to run some custom rake tasks on set intervals using rufus-scheduler.
Here is my task_scheduler.rb
require 'rufus-scheduler'
require 'rake'
load File.join(Rails.root, 'lib', 'tasks', 'worker_runner.rake')
s = Rufus::Scheduler.new
s.every '1m' do
Rake::Task['auto_visit'].reenable
Rake::Task['auto_visit'].invoke
end
s.every '5m' do
Rake::Task['room_master'].reenable
Rake::Task['room_master'].invoke
Rake::Task['room_key'].reenable
Rake::Task['room_key'].invoke
end
s.every '15m' do
Rake::Task['deadmans_snitch'].reenable
Rake::Task['deadmans_snitch'].invoke
end
s.every '1h' do
Rake::Task['bitly_data'].reenable
Rake::Task['bitly_data'].invoke
end
Here is my worker_runner.rake
task :auto_visit => :environment do
puts 'Running auto visit worker'
AutoVisitWorker.new.perform
end
task :bitly_data => :environment do
puts 'Running bitly data worker'
BitlyDataWorker.new.perform
end
task :deadmans_snitch => :environment do
puts 'Running Deadmans Snitch worker'
DeadmansSnitchWorker.new.perform
end
task :room_master => :environment do
puts 'Running Room Master worker'
RoomMasterApiWorker.new.perform
end
task :room_key => :environment do
puts 'Running Room Key worker'
RoomkeyApiWorker.new.perform
end
The intervals are triggering correctly but I keep getting the following error:
rufus-scheduler intercepted an error:
2218687480 job:
2218687480 Rufus::Scheduler::EveryJob "1m" {}
2218687480 error:
2218687480 2218687480
2218687480 RuntimeError
2218687480 Don't know how to build task 'environment'
2218687480 /Users/NamNguyen/.rvm/gems/ruby-2.1.1/gems/rake-10.4.2/lib/rake/task_manager.rb:62:in `[]'
I was researching this and it seems like maybe I'm not loading the environment in the 'task_scheduler.rb' correctly.
I tried loading 'RAILS_ENV=development' before 'Rake::Task' getting the same error. I also tried loading it after (which I know doesn't make any sense) with no luck. I also tried to 'require './config/boot'' and 'require './config/environment'' at the top with no luck.
I've also tried system 'rake worker_runner:auto_visit RAILS_ENV=development' which ended up running each task twice.
Any help will be greatly appreciated :)
PS. I'm newbie, so sorry, if that was dumb question
Could the answer at Testing Rake task with Rspec with Rails environment help?
require 'rufus-scheduler'
require 'rake'
MyRailsApp::Application.load_tasks
# ...
Found via https://www.google.com/search?q=don%27t+know+how+to+build+task+%27environment%27