Ruby Hash の比較

Ruby の Hash は 順序が保たれる。

関連記事. 2022-09-28 データ構造: Hash Table / Ruby で Hash | TTIL

しかし == で比較すると順序が違っても同一Hashとみなされる。

{a:1, b:2} == {b:2, a:1} #=> true

rspec でも同様に下記のテストは通ってしまう。

expect({ a: 1, b: 2 }).to eq({ b: 2, a: 1 })

順序を検証したければ Array に変換する

じゃあ順序も含めて検証したい場合はどうするか? 一旦 Array に変換した上で比較を行うと順序も含めて検証できる。

{ a: 1, b: 2 }.to_a == { b: 2, a: 1 }.to_a #=> false

ref. RSpecの contain_exactly 相当でハッシュを検証する方法に悩んでしまった話 - Qiita

crontab 書式

一生覚えられない cron 書式はサービスを利用していきたい。

Crontab.guru - The cron schedule expression generator