【インフラ初心者向け】Macの古いRubyをrbenvでバージョンアップさせる方法

rubyアイキャッチ プログラミング

どうも、フリーランスエンジニアのYutaです。プログラミング言語のRubyで何かしらの開発を行う際、環境構築を行いますよね。

Windowsの場合はインストーラーなどで別途ダウンロードする必要がありますが、実はMacには既にrubyがプリインストールされています。

しかし、プリインストールされているrubyのバージョンは古いままで、現在は公式サポート外。

rubyに限らずプログラミング言語はそのバージョンによって挙動が変わるので、開発時や書籍などで勉強する際にはバージョンを切り替えてあげる必要があります。

そこで、そのバージョン管理に使うのがrbenv(アールビーエンブ)というツールです。

このツールはターミナルからコマンドを叩いてインストールするのですが、しっかり設定しないと上手くバージョンが管理できないことがあります。

そこで今回のエントリーでは、過去に僕がつまづいた経験を元に、rbenvを使ったrubyのバージョンアップ方法について書いていきます。

この記事の対象となる人

  • Rubyの環境構築を自分の力でやってみたい人
  • rbenvを使えるようになりたい人
  • ターミナルの使い方に慣れたい人

この記事で得られるもの

  • rbenvの使い方やトラブルが起きた際の対処法を学ぶことができます。
  • bashのpathについて踏み込んでいくため、Linuxについて詳しくなれます。
  • トラブルが起きた際の試行錯誤が体験できます(笑)

まずは現在の初期状態を確認しよう

Yutas-MacBook-Air:ruby ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
Yutas-MacBook-Air:ruby ushijimayuuta$

冒頭でも触れましたが、rbenvはrubyのバージョン管理ツールです。これを使うことで、mac上で複数のバージョンのrubyを切り替えながら使うことができます。

実行すると下記のようになる。

# brewを使って、rbenvをインストール
$ brew  update
$ brew  install rbenv ruby-build
######################################################################## 100.0%
==> Pouring pkg-config-0.29.2.sierra.bottle.tar.gz
:beer:  /usr/local/Cellar/pkg-config/0.29.2: 11 files, 627KB
==> Installing rbenv dependency: ruby-build
==> Downloading https:https://github.com/rbenv/ruby-build/archive/v20170523.tar.gz
==> Downloading from https:https://codeload.github.com/rbenv/ruby-build/tar.gz/v201705
######################################################################## 100.0%
==> ./install.sh
:beer:  /usr/local/Cellar/ruby-build/20170523: 346 files, 183.3KB, built in 8 seconds
==> Installing rbenv
==> Downloading https:https://homebrew.bintray.com/bottles/rbenv-1.1.1.sierra.bottle.t
######################################################################## 100.0%
==> Pouring rbenv-1.1.1.sierra.bottle.tar.gz
:beer:  /usr/local/Cellar/rbenv/1.1.1: 36 files, 62.8KB

Yutas-MacBook-Air:ruby ushijimayuuta$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile #=> bash_profileにrbenvのpathを追加

Yutas-MacBook-Air:ruby ushijimayuuta$ source ~/.bash_profile #=> bash_profileの更新 

Yutas-MacBook-Air:ruby ushijimayuuta$ rbenv install 2.4.1 #=> rbenv installで指定したバージョンをインストール 
ruby-build: use openssl from homebrew
Downloading ruby-2.4.1.tar.bz2...
-> https:https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.bz2
Installing ruby-2.4.1...
Installed ruby-2.4.1 to /Users/ushijimayuuta/.rbenv/versions/2.4.1

Yutas-MacBook-Air:ruby ushijimayuuta$  rbenv global 2.4.1 #=> rbenv globalでシステム全体のバージョンを2.4.1に設定
Yutas-MacBook-Air:ruby ushijimayuuta$  rbenv rehash #=> rbenv rehashで設定更新
ruby -v

ここで、次のコマンドを叩いてバージョンを確認してみましょう。

Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

上記のようにバージョンが更新されていればOKです。

一旦ここで、インストールするためのコマンドをおさらいしておきましょう。

$ brew update
$ brew install rbenv ruby-build
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv install 2.4.1
$ rbenv global 2.4.1
$ rbenv rehash
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

問題なく設定できたかた、お疲れ様でした。あとはそのまま開発や勉強をガンガン進めて行ってください!

ちなみに、以下の記事では仮想環境を構築できるツールであるVagrantを用いて,Railsの環境構築手順を書いています。

挑戦してみたい方は、ぜひチャレンジしてみてくださいね。

[Progate卒業生向け]VagrantでRails開発環境を構築するための完全マニュアル
どうも、エンジニアブロガーのYutaです。今回はVagrantでRuby on Rails(以下rails)の開発環境を整える方法についてレクチャーします。この記事の通りに設定してもらえれば、仮想環境でrailsを動かすことができるので

トラブル解決編~rubyのバージョンが更新されないケース~

この記事前半に書いてある通りに設定してもバージョンが切り替わっていないあなたは、次の章から書いていくトラブル解決編を読んでみてください。

ここでは一旦bash_profileを削除してから、パスを通してrbenvを再インストールさせてます。

Yutas-MacBook-Air:ruby ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
Yutas-MacBook-Air:ruby ushijimayuuta$

あれ、バージョンが変わっていないですね。。。

$ rbenv versions

現在rbenv内でどのバージョンが管理されているかを、上記のコマンドで確認し、そのあと、一旦ターミナルを終了して再起動してみます。

Yutas-MacBook-Air:ruby ushijimayuuta$ rbenv versions
2.4.1 (set by /Users/ushijimayuuta/.rbenv/version)
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

rbenvの導入はできていますが、mac本体のrubyのバージョンは変更されていません。

rbenvのpathについて調査してみる

rubyのpathが通ってなさそうなので、

rbenv init
source ~/.bash_profile

rbenv初期化してsourceコマンドでbash_profileの読み込みを実行してから、

ruby -v

で改めてバージョン確認。

Yutas-MacBook-Air:~ ushijimayuuta$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

Yutas-MacBook-Air:~ ushijimayuuta$ source -/.bash_profile
-bash: source: -/: invalid option
source: usage: source filename [arguments]
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

変わってない気が。。。そりゃそうだ、sourceのコマンドがtypoしてますからね。

>`source ~/.bash_profile`

“-/.”ではなく、”~/.”が正しいです。

Yutas-MacBook-Air:~ ushijimayuuta$ source ~/.bash_profile
-bash: /Users/ushijimayuuta/.bash_profile: No such file or directory
Yutas-MacBook-Air:~ ushijimayuuta$ source ~/.bash_profile
-bash: /Users/ushijimayuuta/.bash_profile: No such file or directory
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
Yutas-MacBook-Air:~ ushijimayuuta$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

Yutas-MacBook-Air:~ ushijimayuuta$ source ~/.bash_profile
-bash: /Users/ushijimayuuta/.bash_profile: No such file or directory
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]
Yutas-MacBook-Air:~ ushijimayuuta$

改めて実行してみるも、「No such file or directory」で「`bash_profile’」 のファイルなんかねーよ!」と怒られてるっぽいです。

bash_profileを再作成して、再度rbenvを初期化してみる

touch ~/.bash_profile
rbenv init
source ~/.bash_profile
ruby -v

を実行すると?

Yutas-MacBook-Air:~ ushijimayuuta$ touch ~/.bash_profile
Yutas-MacBook-Air:~ ushijimayuuta$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:

eval "$(rbenv init -)"

Yutas-MacBook-Air:~ ushijimayuuta$ source ~/.bash_profile
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

やっぱりまだ更新されてない。。。

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
ruby -v

上記のコマンドを実行することで、rbenvのpathを通します。

Yutas-MacBook-Air:~ ushijimayuuta$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
Yutas-MacBook-Air:~ ushijimayuuta$ source ~/.bash_profile
Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16]

それでもダメ。。。

rbenvがインストールされているpathを確認

ここで一旦、rbenvがどのようなpathでインストールされているかを確認するLinuxコマンドwhichを実行。

which rbenv

コマンドを叩いてみると・・・?

Yutas-MacBook-Air:~ ushijimayuuta$ which rbenv
/usr/local/bin/rbenv
Yutas-MacBook-Air:~ ushijimayuuta$

なんかローカルにできているっぽい。

再度bash_profileを削除して再トライ

rm ~/.bash_profile
touch ~/.bash_profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

bash_profile ローカルにあったプロファイルを削除して、新しくパスを通すために、上記のコマンドを一つ一つコピペして実行させてみます。

3行目の echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile で、 rbenvのpathをbash_profile に追加しています。

4行目の echo 'eval "$(rbenv init -)"' >> ~/.bash_profile で、ターミナル起動時に path を読み込むようにしています。

ターミナルを再起動する

ここまでできたら、シェルスクリプト通りにbash_progfileを実行させるため、一旦ターミナルを再起動してみましょう。

`source ~/.bash_profile` は bash_profile

そうしたら、上記のようにsourceコマンドを実行して、bash_profileを読み込み(更新)をします。

一通り実行し終わったら、ターミナルを再度終了。(window を閉じるだけでなく、cmd+Qで終了させる)

起動したのちにruby -vでバージョンの確認。

Yutas-MacBook-Air:~ ushijimayuuta$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

ようやくバージョンを管理することができましたー!いやー、長かった!

ちょっとしたつぶやき

2017.07.03に書いたこの記事ですが、あれから年月が経って色々と知見が増えたのでリライトしました。

リライトすることで復習にもなり、知識の再確認ができるのでいいですね。

コメント