Module: EventMachine
- Defined in:
- lib/em-timers/em-timers.rb
Class Method Summary collapse
- .do(options = {}, &blk) ⇒ Object
- .do_daily(options = {}, &blk) ⇒ Object
- .do_hourly(options = {}, &blk) ⇒ Object
- .do_monthly(options = {}, &blk) ⇒ Object
- .do_weekly(options = {}, &blk) ⇒ Object
Class Method Details
.do(options = {}, &blk) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/em-timers/em-timers.rb', line 3 def self.do(={}, &blk) increment = [:every] starting = [:starting] reschedule = proc {|inc, block| EM.add_timer(inc) { reschedule.call(inc, block) } ; block.call } if starting == :now EM.add_timer(increment) { reschedule.call(increment, blk) } blk.call return nil else if starting.is_a?(String) starting = Object.const_defined?("Chronic") ? Chronic.parse(starting) : Time.parse(starting) elsif starting.is_a?(Time) || starting.kind_of?(Numeric) starting = starting else starting = Time.now end end if starting.is_a?(Time) time = starting - Time.now else time = starting end while time < 0 time += increment end EM.add_timer(time) { reschedule.call(increment, blk) } return nil end |
.do_daily(options = {}, &blk) ⇒ Object
42 43 44 |
# File 'lib/em-timers/em-timers.rb', line 42 def self.do_daily(={}, &blk) self.do({:every => 1.day}.merge(), &blk) end |
.do_hourly(options = {}, &blk) ⇒ Object
38 39 40 |
# File 'lib/em-timers/em-timers.rb', line 38 def self.do_hourly(={}, &blk) self.do({:every => 1.hour}.merge(), &blk) end |
.do_monthly(options = {}, &blk) ⇒ Object
50 51 52 |
# File 'lib/em-timers/em-timers.rb', line 50 def self.do_monthly(={}, &blk) self.do({:every => 1.month}.merge(), &blk) end |
.do_weekly(options = {}, &blk) ⇒ Object
46 47 48 |
# File 'lib/em-timers/em-timers.rb', line 46 def self.do_weekly(={}, &blk) self.do({:every => 1.week}.merge(), &blk) end |