遅延読み込みの整数プロパティの結果が整数インスタンスと一致しない理由

概要

実際には Integer の BatchLoader ライブラリから取得した遅延ロード プロパティである可能性がある引数値があります。 case-expression を使用すると、値の動作が少しおかしくなります。便宜上、Integer === (負け比較) 演算子を使用すると、結果は次のようになります。

[11] pry(ActiveJob::Arguments)> Integer === argument.to_i
=> true
[12] pry(ActiveJob::Arguments)> Integer === argument
=> false
[13] pry(ActiveJob::Arguments)> argument.is_a?(Integer)
=> true
[14] pry(ActiveJob::Arguments)> argument.class.name
=> "Integer"

2 番目の結果が false になるのはなぜですか? 引数がどこから派生したかを確認する方法はありますか?

解決策

@tadman が説明しているように、引数変数のメソッドがバッチローダー ライブラリによって上書きされ、比較が失敗します。 @tadmanのソリューションで確認できます。有難うございます。