-
enhancements
- Add support for Rails 8.0 (by @TasnimSyncX)
-
chores
- Add tests for switching Date.beginning_of_week
- Update Rubocop settings
- enhancements
- Add support for Rails 7.1 (by @bugthing)
- Add support for Ruby 3.2
- breaking changes
- Drop support for Ruby 2.6
- enhancements
- Performance optimization for recurrences with :at option (by @artinboghosian)
-
enhancements
- Add support for Ruby 3.x
- Add support for Rails 7.0
- Add basic support for ical parsing
-
bug fixes
- Make :during option work for time range spanning midnight
-
enhancements
- Adds
Montrose.covering
to disambiguateMontrose.between
behavior#covering
provides recurrence masking behavior, i.e., only recurrences within the given range will be emitted - Added support for ActiveSupport 6 and Ruby 2.7
- Adds
Montrose#infinite?
and ensuresMontrose.finite?
returns a boolean
- Adds
-
bug fixes
- Fixes
Recurrence#include?
behavior for infinite recurrences with intervals > 1
- Fixes
-
breaking changes
Montrose.between
no longer provides masking behavior, which is now provided byMontrose.covering
. A global option can be usedMontrose.enable_deprecated_between_masking = true
to retain the legacy behavior forMontrose.between
. This option will be removed in v1.0.- Dropped official support for EOL'd rubies and ActiveSupport < 5.2
-
miscellaneous
- switched from Travis to CircleCi for builds
- switched default branch to
main
- enhancements
- Adds
Recurrence#during
to support recurrences within time-of-day ranges, e.g.Montrose.every(20.minutes).during("9am-5pm")
- Adds
- enhancements
- Adds
Schedule.dump
andSchedule.load
to support ActiveRecord column serialization
- Adds
-
enhancements
- Overrides
Recurrence#as_json
(by @mmagn) to correlate with behavior ofRecurrence#to_json
- Overrides
-
bug fixes
- In overriding
Recurrence#as_json
as described above, fixes potential infinite loop of calling the method with an infinite recurrence
- In overriding
-
breaking changes
- Start time for a daily Recurrence defined with :at options will no longer reset to the beginning of the day; addresses confusion with original behavior in which such occurrences could emit events in the past relative to the given or explicit start time, i.e., earlier in the day
-
enhancements
- Enables support for ActiveRecord 6
-
bug fixes
- Fixes bug for nth day of month when used with yearly interval
-
breaking changes
- Using selected with :month with :day as a Hash will now enforce the
NthDayOfMonth
recurrence rule - Drops official support for Ruby 2.1 and 2.2
- Using selected with :month with :day as a Hash will now enforce the
- bug fixes
- Fixes use of :at when time of day earlier than :starts
- bug fixes
- Fixes interval comparisons for secondly, hourly, minutely by zeroing usec for recurrence start and end times
- enhancements
- Parsing the
:at
option now initializes recurrence by the hour-minute-second - Support activesupport-5.2 (by @zokioki)
- Support ruby-2.5
- Support YAML.safe_load for Recurrence#to_yaml
- Parsing the
-
enhancements
- Adds the :exclude_end option can be used to determine whether :until value is included in the recurrence. Mimics the API to Ruby's Range.
- Support activesupport-5.1 (by @fauxparse)
- Support ruby-2.4
-
bug fixes
- Recurrence#to_json accepts arguments for JSON.dump
-
breaking changes
- Previously, the :between option served as a shorthand for :starts to :until. Now, when both :starts and :between are provided, the recurrence will behave as if anchored by the given :starts option, but filtered through the given :between option.
- The :exclude_end option changes the default behavior of :until--when the timestamp of the interval matches the :until timestamp, it will be included by default unless the :exclude_end option is set to true.
- enhancements
- Alias
every
tofrequency
- Handle JSON and hashes in Recurrence serialization
- Handle blank and nil objects in Recurrence deserialization
- Alias
- enhancements
- Adds
Recurrence#include?
- Improved documentation
- Adds
- enhancements
- Add CI support for ActiveSupport 4.1, 4.2, 5.0 (by @phlipper)
- bug fixes
- Respect
ActiveSupport::TimeWithZone
objects for casting time objects (by @tconst)
- Respect
-
enhancements
- Support
Montrose.every(:second)
- Support
-
bug fixes
- Ensure
ActiveSupport::Duration
parts are used; fixes 'every 30 days' bug
- Ensure
- enhancements
- Respect configured time zone by using
Time.current
fromActiveSupport
- Adds
Montrose::Recurrence#to_json
method - Additional tests for utils methods (by @AlexWheeler)
- Respect configured time zone by using
- enhancements
- Adds
:except
option and chainable method to filter timestamps by date (by @thewatts)
- Adds
- bug fixes
- Fix recurrences when specifying both
:starts
and:at
by treating:starts
value like a date - Respect recurrence rules using multiple
:at
values - Using
Montrose.r
without any arguments no longer throwsArgumentError
- Fix recurrences when specifying both
- bug fixes
- Handle
Hash
inMontrose::Chainable
methods that support varargs
- Handle
- enhancements
- Adds
Montrose.r
method for starting a new recurrence - Adds
Chainable
alias methods including#starts
,#until
,#repeat
- README updates (by @thegcat)
- Adds
- bug fixes
- Handle
nil
inMontrose::Options
constructor
- Handle
- enhancements
- extend
Montrose::Schedule
api for building and adding recurrences - add more details to chainable docs
- merge default options at enumeration time for more consistent serialization
- extend
- bug fixes
- add missing
require "forwardable"
- add missing
- enhancements
- add better
#inspect
methods inRecurrence
andOptions
- use refinement to refactor Options internal arg merging
- support ruby 2.3.0 in travis builds
- add better
- initial release