1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- unless defined?(Rails)
- puts
- puts "Please run me with rails runner, for example:"
- puts " RAILS_ENV=production bundle exec rails runner bin/schedule.rb"
- puts
- exit 1
- end
- require 'rufus/scheduler'
- def run_schedule(time, mutex)
- mutex.synchronize do
- puts "Queuing schedule for #{time}"
- Agent.delay.run_schedule(time)
- end
- end
- def propogate!(mutex)
- mutex.synchronize do
- puts "Queuing event propagation"
- Agent.delay.receive!
- end
- end
- mutex = Mutex.new
- scheduler = Rufus::Scheduler.start_new
- scheduler.every '5m' do
- propogate!(mutex)
- end
- %w[2m 5m 10m 30m 1h 2h 5h 12h 1d 2d 7d].each do |schedule|
- scheduler.every schedule do
- run_schedule "every_#{schedule}", mutex
- end
- end
- 24.times do |hour|
- scheduler.cron "0 #{hour} * * * America/Los_Angeles" do
- if hour == 0
- run_schedule "midnight", mutex
- elsif hour < 12
- run_schedule "#{hour}am", mutex
- elsif hour == 12
- run_schedule "noon", mutex
- else
- run_schedule "#{hour - 12}pm", mutex
- end
- end
- end
- scheduler.join
|