tyoshikawa1106のブログ

- Force.com Developer Blog -

Rails:Rubyのバージョンアップを試してみました

きちんとテストを書いたRailsアプリを用意できたのでRubyのバージョンアップについて試してみました。Ruby 2.2.2を使って開発していたのですが、今はRuby 2.2.3が最新みたいなのでこのバージョンに切り替えてみたいと思います。

Ruby 2.2.3 リリース


最新版のRubyをインストールするのはrbenvで簡単に実行できます。まずは次のコマンドでインストールできるバージョンを確認します。

rbenv install -l

f:id:tyoshikawa1106:20150911015814p:plain


もし最新のバージョンが表示されていない場合は、Ruby buildを更新すると表示されるみたいです。自分の環境ではまだインストールもしていなかったのでやり方を確認してインストールしました。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

f:id:tyoshikawa1106:20150911020111p:plain


バージョンの確認ができたら、次のコマンドでRubyの最新版をインストールします。上手く行ったらrbenv globalコマンドでデフォルトバージョンに設定します。ruby -vで正しく設定できているか確認できたらOKです。

$ rbenv install 2.2.3
$ rbenv global 2.2.3
$ ruby -v

f:id:tyoshikawa1106:20150911015547p:plain


バージョン変更後に今まで動いていたRailsアプリを『rails s』コマンドで起動しようとするとエラーになります。
f:id:tyoshikawa1106:20150911020316p:plain


Gemfileで指定しているバージョンが古いのが原因です。
f:id:tyoshikawa1106:20150911020409p:plain


こんな感じで最新のバージョンに変更してあげると解決します。
f:id:tyoshikawa1106:20150911020453p:plain


Gemfileを変更したら、bundle installが必要です。実行してみたところエラーが発生しました。

The `bundle' command exists in these Ruby versions:


どうすればいいのかなと検索してみたところ、Qiitaで解決方法が紹介されていました。


次のコマンドで最新のbundlerをインストールすればいいみたいです。

$ gem install bundler

f:id:tyoshikawa1106:20150911021058p:plain


最新のbundlerをすると、bundle installを無事に実行できました。
f:id:tyoshikawa1106:20150911021753p:plain


準備ができたので、『rails s』コマンドを実行してみます。今度はエラーにならずに実行できました。Rubyの最新の2.2.3を利用できています。
f:id:tyoshikawa1106:20150911022041p:plain


ひとまず無事にRubyのバージョンを最新にすることができました。よく聞く話でバージョンアップを行うと今まで動いていたところが動かなくなっている可能性があるみたいです。既存部分に影響が無いかはテストを実行して確認します。

$ bundle exec rspec spec/

f:id:tyoshikawa1106:20150911022515p:plain


テストでエラーにならなければ基本的に大丈夫なのかなと思います。あとは実際に画面を動かしてみるのも大切みたいです。


最後にHerokuへのデプロイも確認してみました。

$ git push heroku master

f:id:tyoshikawa1106:20150911023440p:plain


きちんと最新バージョンでデプロイできているみたいです。ということでRubyのバージョンアップの流れはこんな感じでした。