【Ruby】 rbenvにパスを通せないエラーの解決

初投稿になります。

アウトプットの練習をする目的も兼ねて

自身がエラー解決の過程で得た学びを

書いてみたいと思います。

◆ プロジェクト動作環境 ◆
[OS] MacOS High Sierra (10.13.6)
[Ruby] 2.5.1
-> rbenvでプロジェクト毎にバージョン指定
[Rails] 5.2.2
-> rbenvでプロジェクト毎にバージョン指定
==============
[Ruby] 2.3.7
-> /usr/local/binディレクトリに位置する方のRuby

1.サーバーが起動しないエラー

本日、いつもと同じようにコマンドを叩き

# RailsのWEBサーバーpumaを立ち上げるコマンド

bin/rails s

# rbenvなどを用いて、プロジェクトごとにバージョン管理をしている際に
  railsコマンドの前に "bin/" を付ける。
# 該当プロジェクト直下のbinディレクトリにある方のスクリプトを実行
 (= プロジェクトに合わせた特定のバージョンのRailsを動かせる)

RailsのWEBサーバーを立ち上げようとしたら

以下のようなエラーが出てしまいました。

/System/Library/Frameworks/Ruby.framework/Versi
ons/2.3/usr/lib/ruby/2.3.0/ruby/gems/core_ext/kernel_require.rb:55
:in 'require': cannot load such file -- bundler/setup

心当たりは・・・

1・2日前に行った作業の内、心当たりのあるものは2つ。

【可能性A】
VPSにおいて、セキュリティのためにsshサーバーの設定を変更し、rootで直接アクセス出来ないようにした。

【可能性B】
ローカル環境において、https://www.vagrantbox.es/から、Fedora、DebianそしてCentOSがインストールされたディスクイメージを使用して、3種の仮想マシンを作成した。

2.エラーの原因

上記のエラーメッセージから辿って色々と調べていくと、

根幹の原因が判明しました。

ホームディレクトリ直下に作っていたはずの不可視ファイル

【ファイル名】 . bash_profile

が消えてしまっていることによって、

「パスが通らなくなってしまったため」

であると気づきました。

# railsコンソールを起動するコマンド

bundle exec rails console

# その際に、以下のエラー文章が赤文字で表示された。

Your Ruby version is 2.3.7, but your Gemfile specified 2.5.1

そこで、プロジェクトで特定したバージョンの

rubyとrailsを動かせていないことに気づきました。

3.エラー解決のためにした行動

【3ー1】まず、環境変数 PATHの優先順位をチェック

# 環境変数PATHの優先順位を調べるコマンド

echo $PATH

# 実行結果

/usr/local/bin:/usr/bin:/bin:/usr/sbin
参照した記事はこちら
「ユーザーの環境変数を設定するbashの設定ファイルと
カスタムプロンプトについて」
https://oxynotes.com/?p=5418 

現段階では、/usr/local/binディレクトリを参照する形で

RubyとRailsが動いていると判断しました。

【3ー2】rbenv管理しているバージョン2.5.1を優先させる

ホームディレクトリに移動し、消えた不可視ファイル(.bash_profile)を改めて新規作成しました。

# .bashrcファイルを作成

touch ~/.bash_profile

【3−3】作成した .bash_profile を編集

# vimエディタでファイルを開くコマンド

vi ~/.bash_profile

# vimインサートモードに切り替える

キーボード「i」を押下

-----(ファイル開始)------------------------

[ファイル名] .bash_profile

# ファイル内に以下1行を記載。

# 環境変数を最優先順位の位置に追加する 

export PATH=$HOME/.rbenv/shims:$PATH


-----(ファイル終了)------------------------

# vimコマンドモードへ戻る

キーボード「esc(エスケープ)」を押下

# ファイル内の変更を保存してvimを終了するコマンド

:wq

そして、sourceコマンドで環境変数の変更を反映させました。

# 環境変数の変更を反映

source ~/.bash_profile

これで完了です。

【3−4】どのディレクトリのRubyが検知されているか確認

確認のために、which rubyコマンドを実行します。

# 確認

which ruby

# 実行結果

/Users/Hoge/.rbenv/shims/ruby

冒頭のプロジェクトのルートディレクトリにて

railsコマンド(bin/rails s)を実行すると

無事にサーバが立ち上がりました。

最後までお付き合い頂きありがとうございました。

* 認識に誤りがありましたら教えて頂けると幸いです。

この記事が気に入ったらサポートをしてみませんか?