oss-gate/workshop

OSS Gate Workshop: Techouse: 2024-04-08: ozachun: sidekiq-cron: Work log

ozachun opened this issue · 14 comments

This is a work log of a "OSS Gate workshop".
"OSS Gate workshop" is an activity to increase OSS developers.
Here's been discussed in Japanese. Thanks.

作業ログ作成時の説明

以下のテンプレートを埋めてタイトルに設定します。埋め方例はスクロールすると見えてきます。

OSS Gate Workshop: ${LOCATION}: ${YEAR}-${MONTH}-${DAY}: ${ACCOUNT_NAME}: ${OSS_NAME}: Work log

タイトル例↓:

OSS Gate Workshop: Tokyo: 2017-01-16: kou: Rabbit: Work log

OSS Gateワークショップ関連情報

  • スライド:ワークショップの進行に使っているスライドがあります。
  • チャット:OSS開発に関することならなんでも相談できます。ワークショップが終わった後もオンラインで相談しながら継続的にOSSの開発に参加しましょう!
  • シナリオ:ワークショップの目的・内容・進め方の詳細が書いています。
  • 過去のビギナーの作業ログ:他の人の作業ログから学べることがいろいろあるはずです。

fugit に sidekiq-cron で第2月曜日みたいな書き方ができると記載があったが、今使っているsidekiq-cronでは使用できなかった。
fugitのreadmeには、最新ver.でのみ使用できるとあるが、どのバージョンから使用可能なものなのか?

fujit にて、specのテストが下記のリンクに記載されている。
https://github.com/floraison/fugit/blob/b1521eb6abc777230f4512be09fd95dc0dc72f14/spec/cron_spec.rb#L855C5-L855C62

そもそも、sidekiq を インストールして使えるようになるまでのコマンドがreadme網羅されていないのではないか?

sidekiq を 起動するコマンド
bundle exec sidekiq -q default event

sidekiqのgetting started に新しく始めた時の方法は書いてあった。
https://github.com/sidekiq/sidekiq/wiki/Getting-Started

getting start のところで、粗探しできないか調べる
https://github.com/sidekiq/sidekiq/wiki/Getting-Started

使用しているバージョンは下記
2024-04-18T03:23:01.718Z pid=55527 tid=129j INFO: Booted Rails 7.0.7 application in development environment
2024-04-18T03:23:01.718Z pid=55527 tid=129j INFO: Running in ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin22]
2024-04-18T03:23:01.718Z pid=55527 tid=129j INFO: Sidekiq Pro 5.5.8 / Sidekiq Enterprise 2.5.3, commercially licensed.

fugitはsidekiqのwrapperなので、第二月曜日の指定は、fugit側でextensionとしてサポートしているのではないか?

fugit側でも検証するのが良さそう

require 'fugit'

p Fugit.parse('every day at 12am').original  # ==> "0 0 * * *"
p Fugit.parse('every day at 12pm').original  # ==> "0 12 * * *"

p Fugit.parse('every day at 12:00am').original   # ==> "0 0 * * *"
p Fugit.parse('every day at 12:00pm').original   # ==> "0 12 * * *"
p Fugit.parse('every day at 12:00 am').original  # ==> "0 0 * * *"
p Fugit.parse('every day at 12:00 pm').original  # ==> "0 12 * * *"
p Fugit.parse('every day at 12:15am').original   # ==> "15 0 * * *"
p Fugit.parse('every day at 12:15pm').original   # ==> "15 12 * * *"
p Fugit.parse('every day at 12:15 am').original  # ==> "15 0 * * *"
p Fugit.parse('every day at 12:15 pm').original  # ==> "15 12 * * *"

p Fugit.parse('every day at 12 noon').original         # ==> "0 12 * * *"
p Fugit.parse('every day at 12 midnight').original     # ==> "0 24 * * *"
p Fugit.parse('every day at 12:00 noon').original      # ==> "0 12 * * *"
p Fugit.parse('every day at 12:00 midnight').original  # ==> "0 24 * * *"
p Fugit.parse('every day at 12:15 noon').original      # ==> "15 12 * * *"
p Fugit.parse('every day at 12:15 midnight').original  # ==> "15 24 * * *"

  # as of fugit 1.7.2

ヒントになりそう

問題点
https://github.com/floraison/fugit?tab=readme-ov-file に記載の「Related projects」の「Similar, sometimes overlapping projects」の sidekiq-cron - recent versions of Sidekiq-Cron use fugit to parse cron strings
上記記載にて、sidekiq-cornの最新バージョンで利用可能と書いてあるが、どのバージョンから利用できるのか?記載されていない。

期待値
どのsidekiq-cornのバージョンから利用可能なのか記載されていること

実際どうだったか
Booted Rails 7.0.7, Running in ruby 3.2.2, Sidekiq Pro 5.5.8 / Sidekiq Enterprise 2.5.3の場合、[0 5 * * mon#1]のように記載しても動作しなかった。
Sidekiq Pro 5.5.8 / Sidekiq Enterprise 2.5.3のバージョンにて、問題点を確認しました。他のバージョンでは確認していません。

Issue description

Stated in https://github.com/floraison/fugit?tab=readme-ov-file "Related projects - Similar, sometimes overlapping projects" of sidekiq-cron - recent versions of Sidekiq-Cron use fugit to parse cron strings

In the above description, it says that it is available in the recent versions of Sidekiq-Corn, but from which version is it available? Not stated.

スクリーンショット 2024-04-18 15 36 30

How to reproduce

version
Booted Rails 7.0.7, Running in ruby 3.2.2, Sidekiq Pro 5.5.8 / Sidekiq Enterprise 2.5.3

The simplest piece of code that reproduces the issue, for example:

config.periodic do |cron|
  cron.register('0 5 * * mon#1', SampleWorker', 'args' => [])
end

bundle exec rails c

>  SampleWorker.perform_async()

Even though version of Sidekiq Pro 5.5.8 / Sidekiq Enterprise 2.5.3 is old.
Executed, but did not run at the specified time.

I found out that the version of sidekiq-corn I was using was out of date.

Expected behaviour

In "Projects using fugit". Describe which version is executable.

おつかれさまでした!

ワークショップの終了にともないissueを閉じますが、このまま作業メモとして使っても構いません 👌

ワークショップの感想を集めています!

ブログなどに書かれた際は、このページへリンクの追加をお願いします 🙏

またの参加をお待ちしています!