【速報】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

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

関連記事

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833 コボラー、ITコンサル、ローカライズ業界を経てなぜかWeb開発者志願。 これまでにRuby on Rails チュートリアルの大半、Railsガイドのほぼすべてを翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ