I want to find a Ruby gem that can work with recurring events that satisfies the following requirements:
- can process patterns like "Weekly on Tuesday and Wednesday", or "Monthly on the last Tuesday"
- can compute the next occurrence
- can serialize/deserialize a pattern into a string to store in the database
- serialization has a stable format (i.e. it will be able to load even after upgrading)
- work at least with following pattern components: Time, Day of Week, Date of Month, nth day of week in month;
- can repeat daily, weekly, monthly or with interval of n days, weeks or months
- can represent a pattern in natural English language
- can parse a pattern from English (optional)
- can export to some popular format like iCal (optional)
- can integrate with other gems/systems for calendar and task management (optional)
- support of Active Record - parameter parsing, validation (optional)
- has enough tests, and few bugs, more then 1 user :)
- has reasonable performance
I found two relevant candidates:
- Tickle - this can parse English temporal expressions
- Ice_Cube(+Schedule-Attributes) - this is the most popular and can export to iCal
Could you suggest a gem (or set of gems) and describe how well it (or they) meet the criteria listed?
(And if I've missed some important criteria, please mention them in your answer.)