【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)を実行すると
無事にサーバが立ち上がりました。
最後までお付き合い頂きありがとうございました。
* 認識に誤りがありましたら教えて頂けると幸いです。
この記事が気に入ったらサポートをしてみませんか?