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