更新情報

Ruby on Rails最大級の公式カンファレンスであるRailsConfを4月末に控え、Railsのメジャーバージョンアップの発表もそろそろではないかと噂さ れています。現時点で明らかにされているバージョンアップの変更のうち、特筆すべきものをまとめてみました。

・rakeコマンドが不要に

Rails 5以降は、これまでrakeコマンドで呼び出していたコマンドを、railsコマンドで呼び出せるようになります。たとえば、従来の「rake db:migrate」には「rails db:migrate」を使えるようになります。

実はrakeコマンドとrailsコマンドの使い分けに論理的な理由がなかったため、この変更によりコマンドが覚えやすくなりました。

参考 https://github.com/rails/rails/issues/18878

・rakeコマンドでのアプリ再起動

Rails アプリケーションを再起動するためには、tmp/restart.txt というファイルを設置し、「touch tmp/restart.txt」というコマンドを打つ必要がありましたが、Rails 5以降では、「rake restart」コマンドでアプリの再起動ができるようになりました。

参考 https://github.com/rails/rails/pull/19169

・コントローラーのテストでassigns()とassert_templateが非推奨に

Rails 5.0でassigns()とassert_templateが非推奨になりました。使用できなくなったわけではありませんが、後続のバージョンでは削除される可能性があるでしょう。

こ れらの機能が非推奨になった理由は、インスタンス変数をテストしたり、どのテンプレートがコントローラーで呼ばれているかをテストすることは、あまりいい 考え方とはいえないからです。それらはコントローラー内部の事情であり、コントローラーのテストではそのような内部変数について気にするべきではありませ ん。コントローラーが気にすべきことは、どんなクッキーがセットされているかや、どのHTTPコードが起こり、データベースにどんな変化が起きたのか、な どです。

Ruby on Railsの開発者であるDHHは、コントローラーのテストをすべて削除し、代わりに統合テストで賄う可能性についても話しています。

参考 https://github.com/rails/rails/pull/19058

・Ruby 2.2.1のみをサポート

RailsはRuby 2.2.1以上のみサポートするようになり、この新しいバージョンのrubyによるスピードアップを見込んでいます。バージョン2.2.0はセグメンテーション違反のバグがあったため、スキップされました。

参考 https://github.com/rails/rails/pull/19257

・その他

Rails 5はパフォーマンスの面でもさらに改善され、新しい機能も追加されました。今後追って紹介したいと思います。

参考
https://intercityup.com/blog/upcoming-changes-in-rails-5-0.html