CRONCALC : рубиновый жемчужина для расчета вступления в работу крона. С помощью этого драгоценного камня вы можете легко определить, когда будет работать работа Cron, предоставив выражение Cron. Ключевые функции включают возможность расчета вхождения :
Этот инструмент может использоваться для планирования, прогнозирования и анализа задач в системах, которые используют Cron для планирования заданий. Вы также можете прочитать статью о Croncalc здесь.
Установите драгоценный камень, выполнив:
$ gem install cron_calc
После установки cron_calc
вы можете инициализировать CronCalc
с помощью строки Cron.
require 'cron_calc'
cron_calc = CronCalc . new ( '5 5 * * *' )
Теперь вы можете использовать один из трех методов #in
, #next
, #last
чтобы определить возникновение работы Cron в течение определенного периода.
#in
Рассчитывает возникновение работы Cron в течение определенного периода времени.
Параметры:
period
- объект диапазона, определяющий время начала и окончания для расчета. period = Time . new ( 2024 , 1 , 1 , 0 , 0 ) .. Time . new ( 2024 , 1 , 4 , 0 , 0 )
cron_calc . in ( period )
# => [2024-01-01 05:05:00 +0100, 2024-01-02 05:05:00 +0100, 2024-01-03 05:05:00 +0100]
#next
Рассчитывает следующие «н -н -н» возникновения задания Крона с заданного времени начала.
Параметры:
count
- (необязательно, целое число) Количество случаев для расчета. По умолчанию 1.after:
- (Необязательно, время, аргумент ключевого слова) Время начала для расчета возникновения. Если не предоставлено, по умолчанию в текущее время (Time.Now).max_years
- (Необязательно, целое число, аргумент ключевого слова) Максимальное количество лет для поиска будущих событий. По умолчанию 5. cron_calc . next
# => [2023-12-20 05:05:00 +0100]
cron_calc . next ( 3 )
# => [2023-12-20 05:05:00 +0100, 2023-12-21 05:05:00 +0100, 2023-12-22 05:05:00 +0100]
cron_calc . next ( 2 , after : Time . new ( 2024 , 1 , 1 , 0 , 0 ) )
# => [2024-01-01 05:05:00 +0100, 2024-01-02 05:05:00 +0100]
#last
Рассчитывает последние «n» возникновения работы Cron до давного времени в конце.
Параметры:
count
- (необязательно, целое число) Количество случаев для расчета. По умолчанию 1.before:
- (Необязательно, время, аргумент ключевого слова) Время окончания для расчета прошлых событий. Если не предоставлено, по умолчанию в текущее время (Time.Now).max_years
- (Необязательно, целое число, аргумент ключевого слова) Максимальное количество лет для поиска назад для прошлых событий. По умолчанию 5. cron_calc . last
# => [2023-12-19 05:05:00 +0100]
cron_calc . last ( 4 , before : Time . new ( 2024 , 1 , 1 , 0 , 0 ) )
# => [2023-12-31 05:05:00 +0100, 2023-12-30 05:05:00 +0100, 2023-12-29 05:05:00 +0100, 2023-12-28 05:05:00 +0100]
# You can omit the count parameter
CronCalc . new ( '5 5 */5 * SUN' ) . last ( before : Time . new ( 2020 , 1 , 1 , 0 , 0 ) )
# => [2019-12-01 05:05:00 +0100]
# You can combine ',' and '-'
CronCalc . new ( '5 5 5-7,10 FEB *' ) . next ( 5 )
# => [2024-02-05 05:05:00 +0100, 2024-02-06 05:05:00 +0100, 2024-02-07 05:05:00 +0100, 2024-02-10 05:05:00 +0100, 2025-02-05 05:05:00 +0100]
# You can use predefined definitions like @daily, @monthly, etc.
CronCalc . new ( '@monthly' ) . next ( 3 , after : Time . new ( 2024 , 1 , 1 , 0 , 0 ) )
# => [2024-01-01 00:00:00 +0100, 2024-02-01 00:00:00 +0100, 2024-03-01 00:00:00 +0100]
# I want to know when the next 10 Friday the 13ths will be!
CronCalc . new ( '0 0 13 * FRI' ) . next ( 10 )
# =>
# [2024-09-13 00:00:00 +0200,
# 2024-12-13 00:00:00 +0100,
# 2025-06-13 00:00:00 +0200,
# 2026-02-13 00:00:00 +0100,
# 2026-03-13 00:00:00 +0100,
# 2026-11-13 00:00:00 +0100,
# 2027-08-13 00:00:00 +0200,
# 2028-10-13 00:00:00 +0200]
Отчеты об ошибках и запросы на тягу приветствуются на GitHub по адресу https://github.com/mizinsky/cron_calc.
Драгоценный камень доступен в качестве открытого исходного кода в соответствии с условиями лицензии MIT.