Croncalc : uma jóia rubi para calcular ocorrências de trabalho de cron. Com esta jóia, você pode determinar facilmente quando um trabalho de cron ocorrerá fornecendo uma expressão de Cron. Os principais recursos incluem a capacidade de calcular ocorrências :
Essa ferramenta pode ser usada para agendamento, previsão e análise de tarefas em sistemas que usam CRON para agendamento de empregos. Você também pode ler o artigo sobre o Croncalc aqui.
Instale a gema executando:
$ gem install cron_calc
Após a instalação cron_calc
, você pode inicializar CronCalc
com a string cron.
require 'cron_calc'
cron_calc = CronCalc . new ( '5 5 * * *' )
Agora, você pode usar um dos três métodos #in
, #next
, #last
para determinar as ocorrências de trabalho do cron dentro do período especificado.
#in
Calcula ocorrências de trabalho de cron dentro de um determinado período de tempo.
Parâmetros:
period
- um objeto de intervalo definindo os tempos de início e término para o 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 as próximas ocorrências 'n' do trabalho de Cron a partir de um determinado horário de início.
Parâmetros:
count
- (opcional, número inteiro) o número de ocorrências para calcular. Padrões para 1.after:
- (opcional, tempo, argumento da palavra -chave) o horário de início para calcular ocorrências. Se não for fornecido, os padrões para o horário atual (time.now).max_years
- (argumento de palavra -chave opcional, número inteiro) O número máximo de anos para procurar ocorrências futuras. Padrões para 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 as últimas ocorrências 'n' do trabalho de cron até um determinado horário de término.
Parâmetros:
count
- (opcional, número inteiro) o número de ocorrências para calcular. Padrões para 1.before:
- (Opcional, tempo, argumento da palavra -chave) o horário de término para calcular ocorrências passadas. Se não for fornecido, os padrões para o horário atual (time.now).max_years
- (argumento de palavra -chave opcional, número inteiro) O número máximo de anos para pesquisar para trás para ocorrências passadas. Padrões para 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]
Relatórios de bug e solicitações de tração são bem -vindos no github em https://github.com/mizinsky/cron_calc.
A GEM está disponível como código aberto nos termos da licença do MIT.