Class: Montrose::Frequency
- Inherits:
-
Object
- Object
- Montrose::Frequency
- Includes:
- Rule
- Defined in:
- lib/montrose/frequency.rb,
lib/montrose/frequency/daily.rb,
lib/montrose/frequency/hourly.rb,
lib/montrose/frequency/weekly.rb,
lib/montrose/frequency/yearly.rb,
lib/montrose/frequency/monthly.rb,
lib/montrose/frequency/minutely.rb,
lib/montrose/frequency/secondly.rb
Overview
Abstract class for special recurrence rule required in all instances of Recurrence. Frequency describes the base recurrence interval.
Defined Under Namespace
Classes: Daily, Hourly, Minutely, Monthly, Secondly, Weekly, Yearly
Constant Summary collapse
- FREQUENCY_TERMS =
{ "second" => "Secondly", "minute" => "Minutely", "hour" => "Hourly", "day" => "Daily", "week" => "Weekly", "month" => "Monthly", "year" => "Yearly" }.freeze
- FREQUENCY_KEYS =
FREQUENCY_TERMS.keys.freeze
Instance Attribute Summary collapse
-
#starts ⇒ Object
readonly
Returns the value of attribute starts.
-
#time ⇒ Object
readonly
Returns the value of attribute time.
Class Method Summary collapse
- .assert(frequency) ⇒ Object
-
.from_options(opts) ⇒ Object
Factory method for instantiating the appropriate Frequency subclass.
Instance Method Summary collapse
-
#initialize(opts = {}) ⇒ Frequency
constructor
A new instance of Frequency.
- #matches_interval?(time_diff) ⇒ Boolean
- #to_cron ⇒ Object
Methods included from Rule
#advance!, #continue?, #include?, included
Constructor Details
Instance Attribute Details
#starts ⇒ Object (readonly)
Returns the value of attribute starts.
26 27 28 |
# File 'lib/montrose/frequency.rb', line 26 def starts @starts end |
#time ⇒ Object (readonly)
Returns the value of attribute time.
26 27 28 |
# File 'lib/montrose/frequency.rb', line 26 def time @time end |
Class Method Details
.assert(frequency) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/montrose/frequency.rb', line 41 def self.assert(frequency) FREQUENCY_TERMS.key?(frequency.to_s) or fail ConfigurationError, "Don't know how to enumerate every: #{frequency}" frequency.to_sym end |
.from_options(opts) ⇒ Object
Factory method for instantiating the appropriate Frequency subclass.
31 32 33 34 35 36 37 38 |
# File 'lib/montrose/frequency.rb', line 31 def self.(opts) frequency = opts.fetch(:every) { fail ConfigurationError, "Please specify the :every option" } class_name = FREQUENCY_TERMS.fetch(frequency.to_s) do fail "Don't know how to enumerate every: #{frequency}" end Montrose::Frequency.const_get(class_name).new(opts) end |
Instance Method Details
#matches_interval?(time_diff) ⇒ Boolean
55 56 57 |
# File 'lib/montrose/frequency.rb', line 55 def matches_interval?(time_diff) (time_diff % @interval).zero? end |
#to_cron ⇒ Object
59 60 61 |
# File 'lib/montrose/frequency.rb', line 59 def to_cron raise "abstract" end |