
みなさん、こんにちは。突然ですが、気が付けば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でコードを作っていく、というような場合は、上記のような変更で対応することもできます。
ご参考になりましたら幸いです。