#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を以下のとおり更新
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のバージョンを新しいものに指定
...
gem 'puma', '3.12.2'
...
保存して、bundle updateして、Githubにpushするとアラートが一つ消えました。
###3.1.2 actionviewのアップデート
上述のGemfileを見渡してもactionviewは明示的に指定しておらず、はて、どこに書いてあるのかな?と迷いました。
Gemfile.lockに書いてあったのでそこを直接直しそうに血迷いましたが踏みとどまり、
とりあえずGemfileに明示的に指定してbundle updateをしました。
...
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のバージョンを書き換え。
...
gem 'rails', '5.2.2'
...
このあとはお決まりの流れです。
$ bundle update
$ git add -A
$ git commit -m "rails upate"
$ git push
#最後に
この記事を書いてるときに、Gemfileのactionviewの指定がエラーの原因だったんだと思い立ちましたが合ってるでしょうか?
プライベートな開発だから結果オーライですがもう少し慎重に開発せねばと常々思います。