12/09にRails 6.1が正式にリリースされました。
Rails 6.1.0 has been release! Horizontal Sharding, Multi-DB Improvements, Strict Loading, Destroy Associations in Background, Error Objects, and more! https://t.co/PwA5DqTxuB
— Ruby on Rails (@rails) December 9, 2020
お気づきの点がありましたら@hachi8833までお知らせください。
6.1の概要
何度も引用して恐縮ですが、@willnetさんによる以下のスライドとGistが概要を押さえるのに便利だと思います。
今回のリリース情報でフィーチャーされている機能
- マルチプルDB機能の強化
- データベース単位でのコネクション切り替え
- 水平シャーディング
- その他の各種強化
- 関連付けのstrict loading
- delegated typing
- 関連付けをジョブで非同期削除可能に
ActiveModel::Error
- Active Storageの強化
- 特定のdeprecation warning発生時にエラーを発生するオプション
- 各種パフォーマンス向上
- 各種バグ修正
- 「クラシック」オートローダーが非推奨化(今後はZeitwerkに)
- その他多数の改修
Rails 6.1のChangelog
- Action Pack
- 47件(うち非推奨機能の削除約2件、機能の非推奨化約1件)
- Action View
- 50件(うち非推奨機能の削除約24件、機能の非推奨化約1件)
- Active Record
- 142件(うち非推奨機能の削除約10件、機能の非推奨化約4件)
- Active Model
- 6件
- Active Support
- 56件(うち非推奨機能の削除約13件、機能の非推奨化約4件)
- Active Storage
- 32件(うち非推奨機能の削除約4件、機能の非推奨化約4件)
- Active Job
- 16件
- Action Mailer
- 4件
- Action Mailbox
- 9件
- Action Cable
- 5件
- Action Text
- 5件
なお、この中でActive Supportのrequire_dependency
は:zeitwerk
モードではobsolete扱いとしており、まだ非推奨化はされていないものの今後は順次利用しないようにして欲しいという記述が目に止まりました。
Rails 6.0->6.1アップグレードガイド(edge)の要点
Rails.application.config_for
の戻り値のハッシュをStringキーで参照する機能がサポート終了(edgeガイド)- レスポンスの
Content-Type
ヘッダーが6.0と異なる場合がある(respond_to#any
を使う場合など)(edgeガイド) ActiveSupport::Callbacks#halted_callback_hook
の第2引数にコールバック名を書けるようになった(edgeガイド)- コントローラ内のヘルパー読み込みに
require_dependency
が使われなくなったことによる注意事項(edgeガイド) - HTTPからHTTPSへのリダイレクトで使われるデフォルトHTTPステータスコードが308に変わった(edgeガイド)
- Active Storageでimage_processing gemが必須になった(edgeガイド)
現在のedgeアップグレードガイドには記載されていませんが、@willnetさんのGistにある「CSRFトークンのエンコード形式の変更」「ActiveRecordのmergeメソッドの挙動変更」も6.1へのアップグレードの場合に念のためチェックが必要そうです。
参考: RailsDiff
素のRailsアプリのバージョンごとのコンフィグdiff情報については以下のサイトでおおよそを確認できます(なおこのサイトはHTTPS化されていません)。
- サイト: RailsDiff
おまけ: 6.1でrails new
記念写真を撮りたかったので、上の記事で作っておいた以下のリポジトリを元にRails 6.1アプリをサンプルとして作ってみました。
- リポジトリをクローンする
- docker-compose.ymlでRubyを最新バージョンにする
# #L
x-var: &APP_IMAGE_TAG
"my_app:1.0.0"
x-var: &RUBY_VERSION
+ "2.7.1-slim-buster"
+ "2.7.2-slim-buster"
x-var: &NODE_MAJOR
12
x-var: &YARN_VERSION
1.22.4
- dipがインストールされていれば、後は
dip provision
を実行するだけでrails new
も含めて完了します。
- 仕上げに、lvh.meで参照するのであれば、config/environments/development.rbで
Rails.application.configure
ブロック内に以下の一行を追加します。
Rails.application.configure do
# (略)
config.hosts << "lvh.me"
# (略)
end
dip rails s
を実行し、ブラウザでlvh.me:3000
を開きます。
Pumaの起動メッセージが少し賑やかになっていますね。
開始から10分かからずにrails new
できました。次のRuby 3.0が楽しみです。