はじめに
久々に簡単なアプリを作成しようとして、(作成前ついでにRubyをRailsのバージョンを最新にしておくか)と軽い気持ちでバージョンアップを試みたら思いのほか詰まったので備忘録として残しておこうと思います。
バージョンアップの流れとしては
1.Homebrewとrbenvのアップデート
2.Rubyのアップデート
3.Railsのアップデート
という感じです。早速やっていきましょう。
1.Homebrewとrbenvのアップデート
アップデートするコマンドの流れはこちら
$ brew update # Homebrewをアップデートする
$ brew upgrade rbenv && brew upgrade ruby-build
まずターミナルにてbrew update
を実行します。すると早速エラーが
下記を実行すれば良いみたいなので実行
$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
これでbrew update
を実行してもまだ同じエラーが出たのでもう一回同じコマンドを実行
$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
この後に通常通り最初に記述したコマンドを実行したら正常にアップデートされました。
$ brew update # Homebrewをアップデートする
$ brew upgrade rbenv && brew upgrade ruby-build
2.Rubyのアップデート
続いてRubyのアップデートについて。ここでも軽く詰まりました笑
まずはRubyのバージョン確認から
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
バージョンは2.6.8?みたい。続いてどのバージョンにアップデートできるのか確認するために下記コマンドで確認します。
$ rbenv install --list
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.7.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.2.0
truffleruby+graalvm-22.2.0
今回は最新バージョンの3.1.2
に上げたいと思います。
Rubyバージョンアップのため下記コマンドを実行
$ rbenv install 3.1.2
正常にインストールできているか確認のためrbenv versions
を実行して確認してみます。
$ rbenv versions # インストール済のRubyのバージョン一覧
* system
3.1.2
どうやらインストールはできているが、システム全体として使用する為にバージョンの指定をしてsetする必要があるみたいです。よって以下のコマンドを実行します。
$ rbenv global 3.1.2
$ rbenv versions
system
* 3.1.2 (set by /Users/(ユーザー名)/.rbenv/version)
これで正常にインストールされ、最新バージョンをセットできていたと思っていたのですが、これが上手くできていないのが後々発覚します笑
3.Railsのアップデート
この後またエラーが発覚することになるのですが、取り敢えずRailsのインストールを進めました。
Railsをアップデートするコマンドの流れはこちら
$ gem install bundler # Bundlerのインストール
$ gem install rails # Railsのインストール
$ rails -v # Railsのバージョン確認
この流れでRailsをアップデートしようとしたらgem install rails
を実行した際に以下のエラーが。。
ERROR: Error installing rails:
There are no versions of activesupport (= 7.0.4) compatible with your Ruby & RubyGems. Maybe try installing an older version of the gem you're looking for?
activesupport requires Ruby version >= 2.7.0. The current ruby version is 2.6.8.205.
(ん?Rubyのバージョンが2.6.8のまま変わってないだと?)
一旦バージョンを確認してみます。
$ rbenv versions
system
* 3.1.2 (set by /Users/(ユーザー名)/.rbenv/version)
(うん、問題なさそう。)ruby -v
でも確認してみよう。
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
(ん?変わってないだと!?なんで??)
バージョンが異なる問題が発生しました笑
しょうがないから公式読もう
これらによるとrbenv初期化コマンド rbenv init
をbash_profileに追加し、bash_profileを再読み込み。そしてまたrbenv global
でシステム全体で使用できるようセットするとruby -v
で更新できたバージョンになるみたい。
なので以下の一覧のコマンドを実行。
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #rbenv initを仕込む
$ source ~/.bash_profile #bash_profileを再読み込み
$ rbenv global 3.1.2 #今回は3.1.2
よし、準備は整った。よろしくお願いします!!(Enterキー叩く)
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin21]
無事にバージョン更新ができているみたいです!
やっとRailsのアップデートに戻って来れました。再度以下コマンドを実行します。
$ gem install rails # Railsのインストール
Successfully installed rails-7.0.4
Parsing documentation for rails-7.0.4
Done installing documentation for rails after 0 seconds
1 gem installed
$ rails -v # Railsのバージョン確認
Rails 5.2.6
(ん?正常にインストールできているのにバージョンが更新されていない。。なぜ!?)
またもや問題が。。
調べてみるとなんかRails本体がある?ディレクトリにいなかったみたいです which rails
で場所を確認し移動します。
$ which rails
/Users/(ユーザー名)/.rbenv/shims/rails #ここで表示されているのをそのままコピー
$ cd /Users/(ユーザー名)/.rbenv/shims/rails #Rails本体があるディレクトリに移動
$ rails -v # Railsのバージョン確認
Rails 7.0.4
無事更新できているみたいです!!
最後にRails newで確認してみます。
$ rails new sample_app
Rails newで作成されたappのGemfaileを確認します。
ruby "3.1.2"
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 7.0.4"
無事Ruby、Rails共に最新バージョンで作成できてそうですね!
参考
あとがき
いかがだったでしょうか?ついでにバージョンアップしとくかくらいの軽いノリで始めたのに意外と詰まりましたね笑 同じことをされる方の少しでも参考になれば幸いです。
最後までご覧いただき本当にありがとうございました!!
Twitterでも日頃の業務で思ったことを呟いていくのでご覧いただけると幸いです。
@mokio_50