更新情報

みなさん、こんにちは。突然ですが、気が付けばRails5がリリースされてからそろそろ1年になろうとしています。

思い起こせば、Railsバージョン1.xや2.xのときには、とにかくフレームワーク自体のバージョンアップが早く、しかもバージョン番号的にはマイナーバージョンアップでも、内容的にはかなりの変化を含んだアップデートだったりすることもしばしばあったように記憶しています。最近のモバイル系OSが年に1回メジャーバージョンアップするものの、言うほどメジャーアップかな?というようなアップデートしか含まないことも間々あるような気がしておりますが(あくまで筆者の感想です)、当時のRailsのバージョンアップはその真逆といった感じでしたね。

そんなRailsも近頃は、Rails3のリリースが2010年、Rails4のリリースが2013年、Rails5のリリースが2016年と、だいぶメジャーアップのペースも緩やかになってきましたので、実はまだRails4ベースで開発・メンテナンス(もしくは学習)していますという方もいらっしゃるのではないでしょうか。

年月日 バージョン
2004年12月17日 Rails 0.9.0
2005年12月14日 Rails 1.0
2006年3月29日 Rails 1.1.0
2006年8月10日 Rails 1.1.6
2007年11月25日 Rails 1.2.6
2007年12月7日 Rails 2.0.0
2008年6月2日 Rails 2.1.0
2008年11月21日 Rails 2.2.1
2010年9月4日 Rails 2.3.9
2010年8月29日 Rails 3.0
2011年10月7日 Rails 3.1.1
2012年1月26日 Rails 3.2.1
2013年6月25日 Rails 4.0.0
2014年7月2日 Rails 4.1.1
2014年12月19日 Rails 4.2.0
2016年6月30日 Rails 5.0.0

今回は、ちょっと今更なネタかもしれませんが、最近までRails4を利用してきた方が、Rails5に移行するにあたってのコマンドやAPI等の違いについて、簡単にご紹介していきたいと思います。主に、Rails4で作っていたアプリをそっくりそのままRails5で動かしたいというような用途にフォーカスしてお伝えしていければと思います。

もう、勘の良い方はお気づきかもしれませんが、前バージョンから新バージョンへの移行は、開発・運用の現場だけではなく、私たち研修業界でも、教材のアップデートをする際に必要になる対応なのです。今回は(今回も?)そんな教材開発時のネタを掘り起こしてお伝えしていこうという魂胆でございます(笑)

■rakeコマンドがrailsコマンドに統一

Rails4から5への変更点で、まず大きいものとしては、それまで、さまざまな操作に利用されてきたrakeコマンドが、railsコマンドに統一された(railsコマンドでもrakeタスクが実行できるようになった)点でしょうか。

実際には、現状rakeコマンドもまだ有効に実行できるのですが、せっかくですから、今のうちに慣れておくとよいかもしれませんね。

例)

Rails4まで Rails5
rake secret rails secret
rake db:migrate rails db:migrate
rake db:seed rails db:seed
rake routes rails routes

変更されるコマンドの一例

■turbolinksのシンタックスが変更

こちらは、細かな変更ではありますが、turbolinks関係のAPI仕様が若干変更になっています。

Rails4まで <%= javascript_include_tag ‘application’, ‘data-turbolinks-track’ => true %>
Rails5 <%= javascript_include_tag ‘application’, data-turbolinks-track: ‘reload’ %>

■モデルの継承クラスにApplicationRecordが追加された

Rails4までは、ActiveRecord::Baseが親クラスとなっていましたが、Rails5では新たにApplicationRecordクラスが親クラスとして用意されました。コントローラにおけるApplicationControllerクラスのようなものといえばわかりやすいでしょうか。これにより、すべてのモデルに共通な振る舞いを実装することがより簡単になります。

Rails4まで class モデル名 < ActiveRecord::Base
Rails5 class モデル名 <  ApplicationRecord

ということで、これまでRails4を使ってきた方が、とりあえずRails5に移行する場合の、主な違いについてご紹介しました。もちろん、Rails5ではRails4になかった様々な機能やAPIも追加されており、それらを活用するとなるともっといろいろな箇所でコードの移行が必要になってきますが、まずはRails4のコードの知識で、そのままRails5でコードを作っていく、というような場合は、上記のような変更で対応することもできます。

ご参考になりましたら幸いです。