Croncalc : un joyau rubis pour calculer les occurrences de travail CRON. Avec ce joyau, vous pouvez facilement déterminer quand un travail cron se produira en fournissant une expression Cron. Les caractéristiques clés incluent la possibilité de calculer les occurrences :
Cet outil peut être utilisé pour la planification, la prévision et l'analyse des tâches dans les systèmes qui utilisent CRON pour la planification des travaux. Vous pouvez également lire l'article sur Croncalc ici.
Installez la gemme en exécutant:
$ gem install cron_calc
Après avoir installé cron_calc
, vous pouvez initialiser CronCalc
avec la chaîne Cron.
require 'cron_calc'
cron_calc = CronCalc . new ( '5 5 * * *' )
Maintenant, vous pouvez utiliser l'une des trois méthodes #in
, #next
, #last
pour déterminer les occurrences du travail CRON dans un délai spécifié.
#in
Calcule les occurrences du travail CRON dans un délai donné.
Paramètres:
period
- Un objet de plage définissant les temps de début et de fin pour le calcul. 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
Calcule les prochaines occurrences du travail cron à partir d'une heure de début donnée.
Paramètres:
count
- (facultatif, entier) le nombre d'occurrences à calculer. Par défaut est 1.after:
- (Facultatif, temps, argument des mots clés) L'heure de début à partir de laquelle calculer les occurrences. Si ce n'est pas fourni, par défaut, l'heure actuelle (Time.now).max_years
- (Facultatif, entier, argument des mots clés) Le nombre maximum d'années pour rechercher des occurrences futures. Par défaut à 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
Calcule les dernières occurrences du travail Cron jusqu'à une fin de fin donnée.
Paramètres:
count
- (facultatif, entier) le nombre d'occurrences à calculer. Par défaut est 1.before:
- (Facultatif, temps, argument des mots clés) L'heure de fin à partir de laquelle calculer les occurrences passées. Si ce n'est pas fourni, par défaut, l'heure actuelle (Time.now).max_years
- (Facultatif, entier, argument des mots clés) Le nombre maximum d'années pour rechercher en arrière pour les occurrences passées. Par défaut à 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]
Les rapports de bogues et les demandes de traction sont les bienvenus sur GitHub à https://github.com/mizinsky/cron_calc.
Le GEM est disponible en open source en vertu des termes de la licence du MIT.