Rails/OSS パッチ会 (2018年10月)

Rails/OSS パッチ会だった。

RuboCop Rails への切り出しに際して、git の履歴を維持するようにした。

パッチ会だけで行なった成果というものではなく、以下の通りコツコツと cherry-pick していたものの仕上げをした形になる。

パッチ会自体でコミットしたのは以下。

github.com

コミット順序や粒度、メッセージといったものに悩んで、y-yagi さんや松田さんに相談したりしながら master push して反映しておいた。

コミットメッセージもさることながら、GitHub 上の Contributors にも反映されるので、これまでパッチを書いてくれてきている人たちを反映できて良かった。コミットメッセージといえば、GitHub の PR へのリンクは消えるためコミットメッセージ詳細 (3行目以降) が本体に入っていない分は断念しているのであった。

次回の Rails/OSS パッチ会は 11月22日(木) です。あとで勤務先の方にも書いておく予定。

火鍋の会だった

藤村さんが予約してくれた火鍋のお店でカルパスさんと3人で火鍋をつついていた。

自分でタレ薬味を組み合わせる形式で、なかなか新鮮なお店で良かった。ごちそうさまでした。

haidilao.owst.jp

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

RuboCopのheadをRuby 2.6対応した

アーリーアダプタの利用者向けに、RuboCop の head を Ruby 2.6 指定で動くよう対応した。RuboCop の master あるいは、次回の RuboCop リリースで有効になるのでお試しください。

github.com