Croncalc : una joya de rubí para calcular las ocurrencias de trabajo cron. Con esta gema, puede determinar fácilmente cuándo ocurrirá un trabajo cron proporcionando una expresión cron. Las características clave incluyen la capacidad de calcular ocurrencias :
Esta herramienta se puede utilizar para programar, pronosticar y analizar tareas en sistemas que usan Cron para la programación de trabajo. También puede leer el artículo sobre Croncalc aquí.
Instale la gema ejecutando:
$ gem install cron_calc
Después de instalar cron_calc
, puede inicializar CronCalc
con la cadena CRON.
require 'cron_calc'
cron_calc = CronCalc . new ( '5 5 * * *' )
Ahora, puede usar uno de los tres métodos #in
, #next
, #last
para determinar las ocurrencias de trabajo cron dentro del período especificado.
#in
Calcula los acontecimientos laborales Cron dentro de un período de tiempo determinado.
Parámetros:
period
: un objeto de rango que define los tiempos de inicio y finalización para el cálculo. 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
Calcula las siguientes ocurrencias 'n' del trabajo cron desde una hora de inicio dada.
Parámetros:
count
- (opcional, entero) El número de ocurrencias para calcular. Predeterminado es 1.after:
- (opcional, tiempo, argumento de palabras clave) la hora de inicio desde la cual calcular ocurrencias. Si no se proporciona, el valor predeterminado se encuentra en la hora actual (tiempo. Ahora).max_years
- (Opcional, entero, argumento de palabras clave) el número máximo de años para buscar futuros ocurrencias. El valor predeterminado a 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
Calcula las últimas ocurrencias 'n' del trabajo cron hasta un momento final determinado.
Parámetros:
count
- (opcional, entero) El número de ocurrencias para calcular. Predeterminado a 1.before:
- (opcional, tiempo, argumento de palabras clave) el tiempo de finalización desde el cual calcular ocurrencias pasadas. Si no se proporciona, el valor predeterminado se encuentra en la hora actual (tiempo. Ahora).max_years
- (Opcional, entero, argumento de palabras clave) el número máximo de años para buscar al revés para ocurrencias pasadas. El valor predeterminado a 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]
Los informes de errores y las solicitudes de extracción son bienvenidas en GitHub en https://github.com/mizinsky/cron_calc.
La gema está disponible como código abierto bajo los términos de la licencia MIT.