Class: Jumbotron::Scheduling::Clock
- Inherits:
-
Object
- Object
- Jumbotron::Scheduling::Clock
- Defined in:
- app/scheduling/jumbotron/scheduling/clock.rb
Constant Summary collapse
- MINUTE =
17- HOUR =
6- WEEKDAY =
3- WEEKDAY_NAME =
"wednesday"
Class Method Summary collapse
- .canonical_unit(unit) ⇒ Object
- .clock_time ⇒ Object
- .cron(cadence) ⇒ Object
- .day_cron(every) ⇒ Object
- .day_fugit(every) ⇒ Object
- .fugit(cadence) ⇒ Object
- .hour_cron(every) ⇒ Object
- .hour_fugit(every) ⇒ Object
Class Method Details
.canonical_unit(unit) ⇒ Object
40 41 42 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 40 def self.canonical_unit(unit) unit.to_s.sub(/s\z/, "").to_sym end |
.clock_time ⇒ Object
11 12 13 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 11 def self.clock_time "#{HOUR}:#{format('%02d', MINUTE)} am" end |
.cron(cadence) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 28 def self.cron(cadence) every = cadence.every case canonical_unit(cadence.unit) when :minute then "*/#{every} * * * *" when :hour then hour_cron(every) when :day then day_cron(every) when :week then "#{MINUTE} #{HOUR} * * #{WEEKDAY}" else raise ArgumentError, "unsupported cadence unit: #{cadence.unit}" end end |
.day_cron(every) ⇒ Object
56 57 58 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 56 def self.day_cron(every) every == 1 ? "#{MINUTE} #{HOUR} * * *" : "#{MINUTE} #{HOUR} */#{every} * *" end |
.day_fugit(every) ⇒ Object
48 49 50 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 48 def self.day_fugit(every) every == 1 ? "every day at #{clock_time}" : "every #{every} days at #{clock_time}" end |
.fugit(cadence) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/scheduling/jumbotron/scheduling/clock.rb', line 15 def self.fugit(cadence) every = cadence.every case canonical_unit(cadence.unit) when :second then every == 1 ? "every second" : "every #{every} seconds" when :minute then every == 1 ? "every minute" : "every #{every} minutes" when :hour then hour_fugit(every) when :day then day_fugit(every) when :week then "every #{WEEKDAY_NAME} at #{clock_time}" else raise ArgumentError, "unsupported cadence unit: #{cadence.unit}" end end |