cron_calc
1.0.0
Croncalc :Cronジョブの発生を計算するためのRuby宝石。この宝石を使用すると、Cronの発現を提供することにより、Cronジョブがいつ発生するかを簡単に判断できます。主な機能には、発生を計算する機能が含まれます。
このツールは、ジョブスケジューリングにCronを使用するシステムのスケジューリング、予測、分析に使用できます。 Croncalcに関する記事はこちらで読むこともできます。
実行して宝石をインストールします。
$ gem install cron_calc
cron_calc
をインストールした後、Cron stringを使用してCronCalc
初期化できます。
require 'cron_calc'
cron_calc = CronCalc . new ( '5 5 * * *' )
これで、3つのメソッド#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
を使用します特定の開始時間からCRONジョブの次の「n」発生を計算します。
パラメーター:
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」発生を計算します。
パラメーター:
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]
バグレポートとプルリクエストは、https://github.com/mizinsky/cron_calcのGithubで大歓迎です。
GEMは、MITライセンスの条件の下でオープンソースとして利用できます。