3
5

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 5 years have passed since last update.

rbenv の global バージョンが変わらなくて困ったこと 《global と local》

Last updated at Posted at 2019-04-10

rubyのバージョン変更が効かない!!って困ったけど特に問題も見つからなくて
色々調べたらrbenvのことにちょっと詳しくなったっていうお話です。

予め断りますが、高度なお話は期待しないでください。

さて早速ターミナル操作ですよ、と・・・

❯ rbenv global 2.3.1

❯ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]

おんやぁ・・・???

❯ rbenv versions                           
  system
  2.3.1
* 2.5.1 (set by /hogehoge/.ruby-version)

あんれぇ・・・???

ということになったわけです。
困りました。

❯ which ruby                                                                       
/Users/username/.rbenv/shims/ruby
❯ cat ~/.zshrc 
# (bashなら ~/.bash_profile など)
中略
eval "$(rbenv init -)"
中略

rubyの読み込みパスが上記の通りなら
間違いなくrbenvが今使っているrubyを管理をしている。
一応、シェルのプロファイルの中を読んでみると
rbenvのパスが通っているはずなので
シェルはきちんとrbenvを読み込んで実行できている。
(というかターミナルでrbenvコマンド通ってるしね・・・。)
とりあえず大枠でrbenvはエラーなく正常動作しているはず・・・。
なのになぜ!?

さてこれはどういうことか。

#結論をいうと何も異常がない可能性があります。

以下を試してみてください。

❯ cd ~
❯ rbenv versions                                                                   
  system
* 2.3.1 (set by /Users/username/.rbenv/version)
  2.5.1

↑の状態はrbenvlocal環境に設定されたrubyバージョンを読んでいます。
つまりきちんとコマンド通りglobalバージョンの設定変更はできています。

そう、初めからちゃんとバージョン切り替えできていたんです

・・・・globalのね!

##どういうことか説明しますと
そもそもrbenvrubyのバージョン管理を目的としたソフトです。
(たぶんrb=rubyの environment=環境 の管理みたいなネーミング?)
通常にrubyをインストールすると
そのPCでは常時同じバージョンのrubyしか使えません。
しかし、rbenvを使い、rbenvフォルダ以下に
複数のrubyをインストール=管理することで
プロジェクトごとに異なるバージョンのrubyを使い分けることができるというものです。

globalというのは、そのPCがデフォルトで使うバージョンを設定することです。
で、localってのがPCの中の一部、
例えば特定のプロジェクトファイル以下で使うバージョンを指定することです。
このlocalでのバージョン指定をしているのが.ruby-versionというファイルです。
このファイルがあるフォルダ以下には
.ruby-versionファイルに記載されたバージョンのrubyが動きます。

さてここで先程までのターミナルのログを再確認みましょう
ローカルバージョンのログとグローバルバージョンのログをよく比較してみてください。

❯ rbenv versions  
* 2.5.1 (set by /hogehoge/.ruby-version)
* 2.3.1 (set by /Users/username/.rbenv/version)

お分かりでしょうか。

set by以下が違いますね?

これはrbenvがバージョンを参照している管理ファイルの所在です。
上のローカルバージョンでは各フォルダの.ruby-version
そしてグローバルバージョンでは/Users/username/.rbenv/versionです。

わかってる方は記事の最初の方で即ツッコミ入れてたわけですね、、、
m9(^Д^)プギャープスプス何やってんのこいつwww
とか言われてたわけです・・・orz

さてではこの2つのファイルの中身はというと・・・

❯ cat /hogehoge/.ruby-version
2.5.1
❯ cat /Users/username/.rbenv/version                                               
2.3.1

ものっすごいシンプル!!
たったこれだけの記載でバージョン管理がされてるんですね。
(他にもこのファイルを読み込む別のinitファイルあるかもしれませんけど)

謎は全て解けた!
謎も何も・・・rbenvのこと何もわかってなかったっていう恥ずかしい話でした。


そういえば金田一少年は近年37才サラリーマンになって
相変わらず事件に巻き込まれる生活してるみたいです。

##参考記事
今回こちらの記事を参考にさせていただきました。
https://qiita.com/eijish/items/ae16c2c3e4564ab5a6c5

##次回予告
というか実は前回(プライベート記事で)
localhostがiphoneから見られねぇ困った!の記事にすると予告してたのですが
そちらもこれから(個人的には割と必要性が高いと感じるので)環境テストしていく予定です。
ある程度まとまった検証ができ次第記事にしてみようと思います。

3
5
0

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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?