Rails5.2.2にアップデート


1. 前提

環境:AWS Cloud9
Ruby 5.1.6→5.2.2にアップデートした経緯とやったことを纏めます。
今回は何のコーディングもされていない、まっさらな状態のRails環境をアップデートしました。
エラーなど出ようはずがなく、面白みのない備忘録です。
初心者なのでお手柔らかにご指摘いただけると幸いです。
リポジトリ:https://github.com/yumelog/todo_list

2. 経緯

端的に言うと、Githubからのセキュリティアラートを受けてRailsをアップデートすることになりました。

3. やったこと

Railsチュートリアルを参考にWebアプリを作ってみようと、チュートリアルを参考にRails new

$ rails _5.1.6_ new sample_app

Gemfileを以下のとおり更新

Gemfile
source 'https://rubygems.org'

gem 'rails',        '5.1.6'
gem 'puma',         '3.9.1'
gem 'sass-rails',   '5.0.6'
gem 'uglifier',     '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks',   '5.0.1'
gem 'jbuilder',     '2.7.0'

group :development, :test do
  gem 'sqlite3', '1.3.13'
  gem 'byebug',  '9.0.6', platform: :mri
end

group :development do
  gem 'web-console',           '3.5.1'
  gem 'listen',                '3.1.5'
  gem 'spring',                '2.0.2'
  gem 'spring-watcher-listen', '2.0.1'
end

group :test do
  gem 'rails-controller-testing', '1.0.2'
  gem 'minitest',                 '5.10.3'
  gem 'minitest-reporters',       '1.1.14'
  gem 'guard',                    '2.13.0'
  gem 'guard-minitest',           '2.4.4'
end

group :production do
  gem 'pg', '0.20.0'
end

Railsチュートリアル(第4版)ではBitbucketにpushですが今回はGithubへpushしました。
上記作業までをpushすると、Githubからセキュリティ警告メールが届きました。
actionviewが古いよー

pumaが古いよー

3.1 セキュリティアラートへの対処

3.1.1pumaのアップデート

pumaのバージョンを新しいものに指定

Gemfile
...
gem 'puma',         '3.12.2'
...

保存して、bundle updateして、Githubにpushするとアラートが一つ消えました。

3.1.2 actionviewのアップデート

上述のGemfileを見渡してもactionviewは明示的に指定しておらず、はて、どこに書いてあるのかな?と迷いました。
Gemfile.lockに書いてあったのでそこを直接直しそうに血迷いましたが踏みとどまり、
とりあえずGemfileに明示的に指定してbundle updateをしました。

Gemfile
...
gem 'actionview',         '5.1.6.2'
...

すると以下のエラーが発生。

Bundler could not find compatible versions for gem
"actionview":
  In Gemfile:
    actionview (= 5.1.6.2)

rails (= 5.1.6) was resolved to 5.1.6, which
depends on
      actionview (= 5.1.6)

railsのバージョンが合ってないのかと思って勘違いしてRailsのバージョンを上げることにしました。
(この時ググって一番上に出てきた結果がRailsのアップデートだったんですが、もしや5.1.6.2って指定したのがだめだったのか・・・?)

3.1.3 Railsのアップデート

まずGemfileのRailsのバージョンを書き換え。

Gemfile
...
gem 'rails',        '5.2.2'
...

このあとはお決まりの流れです。

$ bundle update
$ git add -A
$ git commit -m "rails upate"
$ git push

エラーなく無事にアップデート完了しました。

最後に

この記事を書いてるときに、Gemfileのactionviewの指定がエラーの原因だったんだと思い立ちましたが合ってるでしょうか?
プライベートな開発だから結果オーライですがもう少し慎重に開発せねばと常々思います。