0
0

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 1 year has passed since last update.

Rubyのバージョン管理とアップグレード時の注意点

Last updated at Posted at 2022-07-14

Ruby のバージョン管理やアップグレード

Ruby のバージョンは毎年 12 月 25 日に新しいバージョンが公開される(3.0.1 → 3.1.0 みたいなアップデートバージョンの公開。もっと細かいバージョンは都度出ている)

その時に Ruby のバージョンアップをするが、そのままアップグレードしてしまうと今まで書いたプログラムが急に動かなくなったりすることもある

なので、 rbenv というものを使って、使用する Ruby のバージョンを管理する必要がある

まず brew の rbenv をインストールする

$ brew install rbenv

既にインストールしているときは、Ruby のバージョンを上げるのに新しい rbenv が必要になるので、以下のコマンドで rbenv ( インストールしてる brew 全部)のアップデートをする

$ brew update

インストールできる Ruby のバージョンを確認する

$ rbenv install -l

Ruby のアップデートを install するために、 ruby-build のアップデートをする

$ brew upgrade ruby-build

Ruby のアップデートをする(Mac 上で選択できる ruby のバージョンを install)

$ rbenv install 3.0.3

使用する Ruby のバージョンを変更する

$ rbenv global 3.0.3 # Mac上で動かすリポジトリ全部でdefaultで動かすバージョンの指定
$ rbenv local 3.0.3 # コマンドを打った時にいたリポジトリで使うバージョンの指定

これで Ruby の version が適用できたかどうかは、いつも通り $ ruby -v で今いる Ruby の version の確認をすれば OK!

バージョンアップがあることとかを考えると、test が書いてあった方が、test を実行するだけですぐに動作の保証ができて楽

また、 Ruby の version up 後はその version の Ruby は gem の内容を知らないので、改めて $ bundle install をしてあげる必要がある

ローカルでの Ruby バージョン指定のされ方と変更の仕方

$ rbenv local 3.0.3 を打つと、そのコマンドを打ったルートに .ruby-version が作成され、その中に version 情報が書かれる

また、 $ rails new した時でも、今は default で .ruby-version が作成されるようになっている

CleanShot 2021-12-10 at 08 03 39

このファイルのあるリポジトリを動かそうとすると、rbenv がその version の Ruby を有効化して、その version の Ruby でそのプログラムを実行してくれる

Gemfile の中にも、Ruby や Rails の version 情報を書くことができる

CleanShot 2021-12-10 at 08 09 44

こうやって version を指定して書いておけば、 $ bundle install で以下のように読み込むことができる

CleanShot 2021-12-10 at 08 08 42

CleanShot 2021-12-10 at 08 09 23

.ruby-version に Ruby の version が 2.7 系って書いてあるのに Gemfile には Ruby の version は 3.0 系って書いてあると、Gemfile で指定している version(= これを使うと宣言している version)と使っている version が違うっていうエラーが起こる

CleanShot 2021-12-10 at 08 15 53

複数人で開発を行うときは、Gemfile に version を明記しておいた方がいい(Gemfile に書いてあれば、そこを見るだけで使っている様々なものの version がすぐにわかる)

Ruby の version を上げる際に、version を固定しておいた方がいいもの

rails と postgresql は特にちゃんと明記しておくべき

Rails は version が変わると仕様が大きく変わるので動作チェックしながら慎重に version up すべきだし、仕様が大きく変わるのでちゃんと誰でもわかる状態にしておくべき

postgresql は自分の手元に入っている brew の version とリポジトリで使う postgresql の version が合わないと動かなくなるので、これもちゃんと誰でもわかるように書いておくべき

また、rails と postgresql に関しては、そういった理由もあるので Ruby の version を上げる時に影響しないように、Gemfile にそもそも version を書いておいて固定するべき

carrierwave とか、あとから自分で入れた上であえて version を指定してるものはそのまま version 指定しておく

なるべくならあえて version 指定するものに関しては version 指定する理由をわかるように書いておくべき

その他の gem は、特に指定せずに Gemfile に書いておき、 bundle update する

0
0
2

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?