class Aaron::Scheduler
Attributes
tasks[R]
Public Class Methods
new()
click to toggle source
# File lib/aaron/scheduler.rb, line 7 def initialize @tasks = [] end
Public Instance Methods
<<(task)
click to toggle source
# File lib/aaron/scheduler.rb, line 28 def << task @tasks << task end
add_task(task)
click to toggle source
# File lib/aaron/scheduler.rb, line 24 def add_task task self << task end
next_sleep()
click to toggle source
# File lib/aaron/scheduler.rb, line 20 def next_sleep tasks.map { |task| task.next_sleep }.sort.first end
run()
click to toggle source
# File lib/aaron/scheduler.rb, line 11 def run while true do n = next_sleep t = tasks.each { |task| task.apply_time!(n) }.select &:ready_to_trigger? sleep(n) t.each &:trigger end end