Cronex
A Ruby library that converts cron expressions into human readable strings. Translated to Ruby from cron-expression-descriptor (C#) via cron-parser (Java).
Original Author & Credit: Brady Holt (http://www.geekytidbits.com).
Features
- Supports all cron expression special characters including:
*
/
,
-
?
L
W
#
- Supports 5, 6 (w/ seconds or year), or 7 (w/ seconds and year) part cron expressions
- Provides casing options (sentence, title, lower)
- Support for non-standard non-zero-based week day numbers
- Supports printing to locale specific human readable format
- Supports displaying times in specific timezones
For a quick intro to cron see Quartz Cron Tutorial.
Available Locales
- English
- Brazilian
- Dutch
- French
- German
- Italian
- Romanian
- Russian
Installation
Add this line to your application's Gemfile:
gem 'cronex'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install cronex
Usage
Zero based day of week
Cronex::ExpressionDescriptor.new('*/5 15 * * 1-5').description
=> Every 5 minutes, at 3:00 PM, Monday through Friday
Cronex::ExpressionDescriptor.new('0 0/30 8-9 5,20 * ?').description
=> Every 30 minutes, between 8:00 AM and 9:59 AM, on day 5 and 20 of the month
Non-zero based day of week
Cronex::ExpressionDescriptor.new('*/5 15 * * 1-5', zero_based_dow: false).description
=> Every 5 minutes, at 3:00 PM, Sunday through Thursday
Localization
Cronex::ExpressionDescriptor.new('30 2 * 2 1-5', locale: 'fr').description
=> À 2:30 AM, lundi à vendredi, seulement en février
Timezones
Cronex::ExpressionDescriptor.new('0-10 11 * * *', timezone: 'America/Los_Angeles').description
=> Every minute between 4:00 AM and 4:10 AM # PDT or
=> Every minute between 3:00 AM and 3:10 AM # PST
Strict quartz-scheduler implementation support
Cronex::ExpressionDescriptor.new('* * * * *', strict_quartz: true).description
=> Cronex::ExpressionError (Error: Expression only has 5 parts. For 'strict_quartz' option, at least 6 parts are required)
See spec tests for more examples.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request