51
46

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.

既存のRailsアプリのRubyバージョンアップしてみた

Last updated at Posted at 2019-06-19

はじめに

先日既存アプリのRubyのバージョンを初めて上げたので、備忘録としてまとめておきます。
もし間違っている点があればご指摘いただけますと助かります。:bow_tone1:
今回はRuby2.5.1から2.6.3へのバージョンアップを行いました。

環境

  • macOS Mojave
  • Rails 5.2.1
  • Homebrew 2.1.4
  • Ruby 2.5.1 (※バージョンアップ前)

バージョンアップしてみる

rubyのバージョンを上げる

[こちら] (https://qiita.com/_am_/items/c1dbeb11f40bbbac8fd9) の記事を参考にRubyのバージョンを上げました。
私はリストに 2.6.3 がいなかったので rbenvruby-build をアップデートしました。

rails s してみる

ここで、とりあえず rails s してみます。
gem install bundler を実行してくれと言われることを確認します。

Bundlerをインストールする

言われるがままに gem install bundler を実行して、Bundlerをインストールします。
bundle install します。
Gemfileとバージョンが違う!と怒られることが確認できると思います。

Gemfile直す

  • Gemfileのバージョンを今回使いたいバージョンに書き換えます。
Gemfile
  source 'https://rubygems.org'
- ruby '2.5.1'
+ ruby '2.6.3'

bundle installする

bundle install します。
ここで私は mysql2 がインストールできない病にかかりました。

[mysql2がインストールできない問題] (https://qiita.com/nakki/items/e15c6b024d27edb2b96b)

Xcodeのアップデートが必要だったのですが、Xcodeのアップデートがずっと待機中から進まず苦労しました。

[【Xcode】アップデート中に待機中から進まなかったときの解決例] (https://chalife.tokyo/apple/xcode/xcode721-update/)
こちらを試しましたが、個人としては凄く力技だなと感じたので、他に何かいい方法があれば教えてください。

神記事。どうやらmacOS Mojavaからopensslのパスを指定しないと上手くいかないみたいです。

参考: [macOS Mojave にアップグレードしたら mysql2 gem のインストール時にエラーが発生した] (https://satococoa.hatenablog.com/entry/2018/10/05/190847)

今度こそrails sする

rails s します。
問題なく動けば第一関門クリア。

Rubocop動かす

ここも問題なく動けばクリア。
私はRubocopに

Error: Unknown Ruby version 2.6 found in `.ruby-version`.
Supported versions: 2.2, 2.3, 2.4, 2.5

と言われたのでアウトでした。Rubocopのバージョンを上げることに。
Rubocopは 0.60.0 からRubyの 2.6 系に対応したみたいです。
今回は最新の 0.71.0 に上げました。
0.71.0 はバグがある( https://github.com/rubocop-hq/rubocop/issues/6861 )ので、その修正分がリリースされるまでは少し待った方がいいかも。

以上でバージョンアップは一通り終わりです。後はRubocopに指摘されるところを直すなり、設定を変更するなりして、RubocopにOKを貰うことが出来れば完璧です:thumbsup_tone1:

手っ取り早くアップデートしたい人向けコマンド・作業リスト

# Rubyのバージョンアップ

$ ruby --version                  # rubyのバージョンを確認する
$ rbenv versions                  # rbenvでインストールしてあるRubyのバージョンを確認する
$ rbenv install -l                # rbenvでインストールできるバージョンの確認
$ brew update                     # rbenvに欲しいバージョンがない場合のみ(brewの更新)
$ brew upgrade rbenv ruby-build   # rbenvに欲しいバージョンがない場合のみ(ruby-buildの更新)
$ rbenv install 2.6.3             # 2.6.3をインストール
$ rbenv local 2.6.3               # .ruby-versionを書き換える

# bundle installする

$ bundle exec rails s             # 失敗することの確認
$ gem install bundler             # bundlerのインストール
$ bundle install                  # GemfileのRubyのバージョンが違うと怒られることを確認
Gemfileの修正
  source 'https://rubygems.org'
- ruby '2.5.1'
+ ruby '2.6.3'
$ bundle install                      # 完了することを確認

# 動作確認

$ bundle exec rails s                 # 問題なく rails s できることの確認
$ bundle exec rubocop                 # 問題なく Rubocop が動くことの確認

最後に

初めてRubyのバージョンアップ対応を行いましたが、思っていたよりは簡単でした。むしろRubocopのバージョンアップに伴う修正や調べ事の方が大変だった印象です。(RubocopのCHANGELOGとずっとにらめっこしていました。)

記事を書いてるうちに「あれ?このコマンドって結局何してるの?」と思う機会も多々あり、あやふやだった知識を定着させるいい機会になりました!
この記事さえあればきっと余裕なので 次回以降のバージョンアップ対応はサクサク出来るはず。

その他参考

  • [[初期設定]なぜ「.ruby-version」を作成するのか?] (https://qiita.com/shi-ma-da/items/74033b932800bb61b3f3)
  • rbenv local と rbenv global の違いについて
    • 今回 .ruby-version ファイルについて変更が必要だったのですが、正直この子だれ……状態だったので調べました。 .ruby-version の存在により、プロジェクト単位で使用するRubyのバージョンを揃えられるんですね……:thinking:
      勉強になりました。
  • [ライブラリ? gem? bundler? -- Rubyのgem管理に関するあれこれまとめ] (https://qiita.com/3no3_tw/items/8c1e3e95c75edae1036d)
  • Xcodeのアップデートが必要になった時に待ち時間が長かったので自身の書き方に誤り等ないか確認する意味も含め読ませていただきました。自分がぼんやりとした感覚で使っていたことを痛感しました。
51
46
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
51
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?