Tech Racho エンジニアの「?」を「!」に。
  • 開発

【速報】Rails 5.1が正式リリースされました!

こんにちは、hachi8833です。
つい今朝方、Rails 5.1が正式にリリースされました。DHH自らがリリース情報を書いてますね。

公式APIドキュメントサイトもしっかり5.1.0に更新されています。


http://api.rubyonrails.org/))より

Rails初心者の方向けの注意

Rails 5.1では以下を含む多くの機能追加や変更が行われており、実際の開発・運用での検証はこれからという状態です。

RailsチュートリアルなどでRailsを勉強する場合は、当面の間、5.1ではなく、5.0の最新安定版であるRails 5.0.2を使うことをおすすめします。

参考までに、5.0.2のGemfileを以下に示します。

以下は公式ニュースを取り急ぎ要約したものです。週刊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へのデフォルト依存を排除

システムテスト

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_tagform_forform_withに統合された

補足: #form_withのAPI呼び出しにはキーワード引数が使われているなど、だいぶ整理されたようです。

公式リリースノート(Railsガイド英語版)

今後のメンテナンスポリシー

  • バグ修正対象: 5.1のみ
  • 通常のセキュリティ修正対象: 5.1.x〜5.0.x
  • 重大なセキュリティ修正対象: 5.1.x、5.0.x、4.2.x

上記より以前のバージョンはサポート対象外となる。

関連記事


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。