A Ruby library for creating and querying recurring schedules with an iCalendar-inspired API.
Ice Cube is a Ruby library for handling recurring events and schedules. It allows developers to define complex recurrence rules using a clean, iCalendar-inspired API and provides fast querying capabilities to check occurrences, list events, and manage exceptions. It solves the problem of programmatically managing repeating dates and times in Ruby applications.
Ruby developers building applications that require scheduling, calendar features, or recurring event management, such as booking systems, reminders, or calendar integrations.
Developers choose Ice Cube for its intuitive Ruby syntax, compliance with the iCalendar standard, and efficient querying performance. It simplifies the complexity of recurrence logic while offering robust features like time zone support and serialization.
Ruby Date Recurrence Library - Allows easy creation of recurrence rules and fast querying
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Modeled after iCalendar with a clean, Ruby-friendly API, allowing easy definition of complex rules like `Rule.yearly.day_of_month(13).day(:friday).month_of_year(:october)`.
Provides fast methods such as `.occurs_on?`, `.occurrences`, and `.next_occurrence` to quickly check and list schedule occurrences, as demonstrated in the README examples for handling large schedules.
Supports adding exception times with `add_exception_time` to exclude specific occurrences while maintaining recurrence rules, ensuring flexibility in schedule management.
Integrates with ActiveSupport for comprehensive time zone and Daylight Saving Time handling, though it requires the gem for full functionality beyond local time or UTC.
The README explicitly states that parsing datetimes with time zone information from iCalendar format is not currently supported, which can hinder interoperability with external calendar systems.
Full time zone functionality requires ActiveSupport, adding an extra dependency and complexity for projects not already using Rails or similar frameworks.
Defining basic rules often involves chaining multiple methods, which might be overly complex compared to simpler date libraries for straightforward scheduling needs.