4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HameeAdvent Calendar 2016

Day 19

ネクストエンジンAPIエクスプローラーをRails5に対応させる

Last updated at Posted at 2016-12-18

はじめに

この記事はHamee Advent Calendar 2016の19日目の記事です。

TL;DR

ボタン一つでネクストエンジンAPIを試すで作成したアプリをRails4.2から5へアップデートしました。

  1. Rubyのバージョンアップ
    • ruby 2.2.2以上
  2. Railsのバージョンアップ
    • rails gemのアップデートのためにGemfileの更新とbundle update
  3. アプリケーションのRails5対応
    • 設定ファイルなどを更新するためbin/rails app:update

Developer Networkの紹介(2017-04-25追記)

ネクストエンジンには Developer Network (略してDevNet)という開発者向けコミュニティサイトがあります。ここには 開発ガイドAPIリファレンス 、チュートリアルなど開発の役に立つ情報が盛りだくさんです。また、開発者同士でディスカッションする コミュニティ もありますので、わからないことがあれば こちら に質問を投稿してください。

ネクストエンジン Developer Networkwork
https://developer.next-engine.com/

この記事で書いていること

ネクストエンジンAPIを簡単に試すウェッブアプリケーションであるne_api_explorerをRails5にアップデートしてみました。

アップデートの手順

  • Rubyのバージョンアップ
  • Railsのバージョンアップ
  • アプリケーションコードの書き換え

Rubyのバージョンアップ

Rails5ではRubyのバージョン2.2.2以上が必要です。これ未満のバージョンの場合は(Railsではなく)Rubyバージョンアップが必要です。

ruby -v # => ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin13]

自分の手元の環境(Mac OS 10.9.4)ではrubyのバージョンが2.2.0だったのでアップデートします。rbenv等を使っている場合はbrew upgrade rbenvするなどして、最新のバージョンが選択できるようにしてください。

rbenv install -l # => 2.2.6 or 2.3.3(2016.12.18現在)
rbenv install 2.2.6

Rubyのバージョンが上がったかを確認し、bundlerのインストールとライブラリのインストールを実行。

ruby -v # => ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-darwin13]
gem install bundler # rubyのバージョンが変わったのでbundleを再インストール
bundle install # gemの再インストール

Herokuでの動作時の注意点

Herokuで動作させるためにはGemfileruby '2.2.6'のようにRubyのバージョンを明示的に指定する必要があったので後から追加しています。

Gemfile
-
+ruby '2.2.6'

この状態でbundle installを再度実行するとGemfile.lockにもRubyのバージョンが追記されます。

Gemfile.lock
+RUBY VERSION
+   ruby 2.2.6p396
+

Railsのバージョンアップ

Rubyのバージョンアップが終わったので今度はRails。元々4.2.5を指定していたので5系を指定。

Gemfile
-gem 'rails', '4.2.5'
+gem 'rails', '~> 5.0'

この状態でbundle updateを実行。bundle installではない点に注意。すると以下のようなメッセージがでて失敗。

Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    rails (~> 5.0) was resolved to 5.0.0, which depends on
      railties (= 5.0.0)

    sass-rails (~> 5.0) was resolved to 5.0.4, which depends on
      railties (< 5.0, >= 4.0.0)

sass-railsの依存関係の問題があるようです。依存関係を解決するためGemfileとエラーメッセージのにらめっこをしながら最終的に以下の差分に。

Gemfile
-gem 'rails', '4.2.5'
+gem 'rails', '~> 5.0'
 gem 'pg', '~> 0.15'
 gem 'sass-rails', '~> 5.0'
 gem 'uglifier', '>= 1.3.0'
-gem 'coffee-rails', '~> 4.1.0'
+gem 'coffee-rails', '~> 4.2.1'

 gem 'jquery-rails'
-gem 'jbuilder', '~> 2.0'
+gem 'jbuilder', '~> 2.6'

この状態で再度bundle updateを実行。引数にはrails以外にアップデートが必要なgemを指定。

bundle update rails sass-rails coffee-rails jquery-rails

すると今度は成功。で、サーバーを起動してみると・・・。起動に成功したと思いきやWARNINGがでている。この状態でlocalhost:3000にアクセスするとエラー。

DEPRECATION WARNING: Accessing mime types via constants is deprecated. Please change `Mime::HTML` to `Mime[:html]`. (called from require at /usr/local/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:91)
DEPRECATION WARNING: Accessing mime types via constants is deprecated. Please change `Mime::TEXT` to `Mime[:text]`. (called from require at /usr/local/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:91)
DEPRECATION WARNING: Accessing mime types via constants is deprecated. Please change `Mime::URL_ENCODED_FORM` to `Mime[:url_encoded_form]`. (called from require at /usr/local/rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:91)
=> Booting WEBrick
=> Rails 5.0.0.1 application starting in development on http://localhost:3000

WARNINGのメッセージでググるとweb-console gemが原因らしいのでアップデートしてみる。

Gemfile
-  web-console (~> 2.0)
+  web-console (~> 3.0)

bundle update web-consoleしてgemを更新した状態でbin/rails s。さあどうだ・・・?

やった!動いた!

ne_api_explorer_rails5.png

コードの書き換え

DBを使っていないこともあって今回は不要でした。モデル層を使うならApplicationRecordなどRails5で登場したクラスなどは作成した方がよいかと思います。

まとめ

Rails4から5への移行を試すならまずは小さなアプリで試すのがよいと思いました(小並感)

宣伝

1ミリたりともRails5の機能は使っていませんが、ネクストエンジンとネクストエンジンAPIと合わせてne_api_explorerをよろしくお願いします。

参考URL

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?