Ginza.rb 第49回

Ginza.rb 第49回 Railsアップグレードの知見を共有しましょうに行った。会場はいつものみんなのウェディングさん。

ginzarb.doorkeeper.jp

y-yagi さんによる Rails のアップグレード手順のお話を中心に、参加者それぞれのアップグレードでの知見が話されたりしていた。

印象的だったトピックを3つ挙げる。

依存 Gem を必要最小限にする

Rails の中の人が見ている Gem (例えば devise) はアプリケーションで余程の手を入れていなければアップグレードの際に問題ないと思うが、そうでない個人 Gem は注意する必要がある (のと、そもそもできるだけ依存を必要最小限にする) 。

非公開 API に依存しない

Rails の公開 API は、ドキュメントが書かれているものであり、nodoc となっているのは非公開 API なのでアプリケーション層で使うものではない。例えば AR の merge! メソッドは非公開メソッドとなる。Ruby の public と private とは別の話であり、Martin Fowler のいう Published Interface かどうかという話がまさにそれだと思う。

config.load_defaults でバージョンを指定する

Rails 5.1 で追加された config.load_defaults は積極的に使って行けると良さそうだと思った (参照) 。

いろいろと知見を得ることができて良い会でした。ありがとうございました。