Ruby 2.6でのPsych.safe_loadの非推奨警告を消した

YAML のバックエンドライブラリである Psych で Psych.load / Psych.safe_load / Psych.parse / Psych.parse_stream / Psych.load_stream に対して、キーワード引数を使ったインタフェースに置き換えるよう警告が出るようになった。Psych.safe_load でキーワード引数を使わなかった場合の警告は以下。

warning: Passing whitelist_classes with the 2nd argument of Psych.safe_load is deprecated. Use keyword argument like Psych.safe_load(yaml, whitelist_classes: ...) instead.
warning: Passing whitelist_symbols with the 3rd argument of Psych.safe_load is deprecated. Use keyword argument like Psych.safe_load(yaml, whitelist_symbols: ...) instead.
warning: Passing aliases with the 4th argument of Psych.safe_load is deprecated. Use keyword argument like Psych.safe_load(yaml, aliases: ...) instead.
warning: Passing filename with the 5th argument of Psych.safe_load is deprecated. Use keyword argument like Psych.safe_load(yaml, filename: ...) instead.

探索する際は、Psych.safe_load よりも YAML.safe_load といった YAML の方がヒットするケースがあると思うので、Psych の方ででヒットしなかった場合はそちらで見てみると良い。

導入されたコミットは以下で、それぞれの警告についてはそちらを参照のこと。

github.com

複数の Ruby バージョンをサポートする必要のある Gem の場合、Ruby 2.6 への ERB.new のキーワード引数を使ったインタフェース変更のように、条件式で旧インタフェースと分けることになると思う。

RubyGems の適用ケース。

github.com

自分が対応した RuboCop への適用ケース。

github.com