こんにちは、hachi8833です。
つい今朝方、Rails 5.1が正式にリリースされました。DHH自らがリリース情報を書いてますね。
- 公式ニュース: Rails 5.1: Loving JavaScript, System Tests, Encrypted Secrets, and more
- Posted by dhh, April 27, 2017 @ 9:05 pm in Releases
公式APIドキュメントサイトもしっかり5.1.0に更新されています。
以下は公式ニュースを取り急ぎ要約したものです。週刊Railsウォッチや5.1 beta1リリースノートに見るRails 5.1の姿などで既にお知らせした内容と大きな変更はないようです。
Rails 5.1: JavaScriptとの連携強化、システムテスト、秘密情報の暗号化ほか
- 発表場所: アリゾナ州フェニックスで今週開催された第12回RailsConfRails
- 5.0リリース以来、4,100を超えるコミット数を費やした
JavaScriptとの連携強化
JavaScriptに関する長い論争を乗り越え、Rails 5.1とJavaScriptはよりいっそう強く手を結ぶ。
JavaScriptの依存性管理をNPMからYarnに置き換える
- Yarn経由で依存するライブラリはすべてアセットパイプラインでrequireされるようになる。
- binstubは
bin/yarn
に置かれる。
JavaScriptをWebpackでコンパイルするオプションを追加
- WebpackはRails標準のコンパイラとなる。アセットパイプラインと完全互換であり、JavaScript以外に画像/フォント/音声などもコンパイルできる。
- オプションは
--webpack
のほかに--webpack=react
、--webpack=angular
、--webpack=vue
といった指定も可能。
jQueryへのデフォルト依存を排除
- rails-ujsをvanilla JavaScriptで書き換えたことで、jQueryへの依存を解消した。
- もちろんjQueryを自分で導入してもよい。
システムテスト
DHHは2014年のRailsConfで、単体テストやTDDに囚われすぎてはいけないと演説したが、今も同じ信念である様子。今や単体テストの重要性は下がり、モデルからビューまでの振る舞いをテストする結合テストの方が重要になっているので、Railsは結合テスト環境を改善するためにJavaScriptとの連携強化に加えてCapybaraを導入した。
ブラウザ表示もテストすれば当然遅くなるが、テストできる項目が増えるメリットの方が大きいと考える。
秘密情報の暗号化
パスワードなどの秘密情報をリポジトリに登録するのはもちろん避けるべきだが、こうした情報を管理する方法が標準化されていなかったのも確か。
従来は秘密情報を環境変数(ENV)に保存する方法が広く使われていたが、秘密情報の変更履歴は自力で管理しないといけない、秘密情報が増えてくると管理しきれなくなるなど、いろいろ問題含みだった。
今回Rails 5.1にsekrets gemにヒントを得たコードを導入したことで、bin/rails secrets:setup
を使って一種のマスターキーを生成し、マスターキーで暗号化した安全性の高い秘密情報をリポジトリに保存できるようにした。productionでRAILS_MASTER_KEY
環境変数にマスターキーを入れておくだけで自動的に暗号化が解除される。
パラメータ化Mailer
Parameterized Mailersを導入したことで、コントローラでやっているのと同じようにMailerにbefore_action
などでパラメータを渡せるようになった。
後方互換性も完全に担保されている。
directルーティングとresolvedルーティング
- directルーティングにより、従来静的であったルーティングファイルにコードを書いてルーティングできるようになった。
-
resolvedルーティングを使うと、たとえば
link_to @comment
と書くとmessage_path(@comment.parent, anchor: "comment_#{@comment.id}")
という形に展開されるようにルーティングをカスタマイズできる。
form_tag
とform_for
がform_with
に統合された
補足:
#form_with
のAPI呼び出しにはキーワード引数が使われているなど、だいぶ整理されたようです。
公式リリースノート(Railsガイド英語版)
今後のメンテナンスポリシー
- バグ修正対象: 5.1のみ
- 通常のセキュリティ修正対象: 5.1.x〜5.0.x
- 重大なセキュリティ修正対象: 5.1.x、5.0.x、4.2.x
上記より以前のバージョンはサポート対象外となる。
Rails 5.1では以下を含む多くの機能追加や変更が行われており、実際の開発・運用での検証はこれからという状態です。
RailsチュートリアルなどでRailsを勉強する場合は、当面の間、5.1ではなく、5.0の最新安定版であるRails 5.0.2を使うことをおすすめします。
参考までに、5.0.2のGemfileを以下に示します。