less is more

心のフルスタックエンジニア👨‍💻バイブスでコードを書いています🤘

Rubyのバージョンアップ手順

経緯

Security fix が入ったパッチバージョンがリリースされていたので。

www.ruby-lang.org

影響を受けるバージョンは以下。

  • Ruby 2.5 系列: 2.5.7 およびそれ以前のバージョン
  • Ruby 2.6 系列: 2.6.5 およびそれ以前のバージョン
  • Ruby 2.7 系列: 2.7.0
  • commit 61b7f86248bd121be2e83768be71ef289e8e5b90 より前の開発版

環境

実際に適用した運用中のアプリケーションは、Amazon LinuxだったりUbuntuだったりそれベースのDockerだったりいろいろだが、今回はrbenvを利用している環境向けと、rubyの公式イメージを元にしたDocker向けについて書く。

ちなみに、2.5.12.5.8 に上げる例とする。

ソースコードの変更箇所

互換性の確認は任せる。

- 2.5.1
+ 2.5.8
  • Gemfile
- ruby "2.5.1"
+ ruby "2.5.8"
  • Gemfile.lock(※bundle install すると自動で更新される)
RUBY VERSION
- ruby 2.5.1p57
+ ruby 2.5.8p224
  • Dockerfile
- FROM ruby:2.5.1
+ FROM ruby:2.5.8
  • .circleci/config.yml
- image: circleci/ruby:2.5.1
+ image: circleci/ruby:2.5.8

弊プロジェクトではこんな感じ。

Docker環境でのバージョンアップ

ビルドするだけ。

docker build -t foo .

または

docker-compose build --no-cache

rbenv環境でのバージョンアップ

  • インストールできるバージョンを確認。
$ rbenv install --list
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
2.5.7
2.5.8
2.6.0-dev
2.6.0-preview1
2.6.0-preview2
2.6.0-preview3
2.6.0-rc1
2.6.0-rc2
...
  • 最新のバージョンだと出てこない場合もある。 その時は、rbenvとruby-buildの更新を行う。各々rbenvがインストールされてるディレクトリに合わせてくれ。~/.rbenvとかもあるな。
cd /usr/local/rbenv
git pull
cd /usr/local/rbenv/plugins/ruby-build
git pull
rbenv install 2.5.8
# 必要に応じて
rbenv global 2.5.8
rbenv rehash
  • バージョンの確認。
$ ruby -v
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]

※ここで一つ注意したいのが、.ruby-versionがあるディレクトリにいると、rbenv globalよりもファイルに記載のバージョンが優先される。

  • bundlerのインストール
rbenv exec gem install bundler
  • 新しいソースを置いてgemの再インストール
bundle install

以上です。