bundle updateするつもりが、うっかりgem update…。その結果、Railsのコマンドが使用できなくなっちゃった!っていう時の対処法メモ

プログラミング

bundle updateするつもりが、うっかりgem updateしてしまいました。

その結果、Railsのサーバーを立ち上げようとすると、こんなエラー画面が出るようになりました。

$ rails s
Traceback (most recent call last):
        1: from /Users/xxxxxxxxx/.rbenv/versions/2.6.6/bin/rails:23:in '<main>'
/Users/xxxxxxxxx/.rbenv/versions/2.6.6/bin/rails:23:in `load': cannot load such file -- /Users/xxxxxxxxx/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/railties-6.0.3.2/exe/rails (LoadError)

さらに、馬鹿なことに、同時にVS Codeを2つ広げていたため、なぜかもう一つの方にもしてしまいました(笑)

そしたら、そっちでも同じようにRailsのサーバー、コンソール、何にも動かないようになってしまいました。

しかも、エラーメッセージが微妙に違う・・・。

$ rails s
Traceback (most recent call last):
        4: from /Users/xxxxxxxxx/.rbenv/versions/2.6.5/bin/rails:23:in '<main>'
        3: from /Users/xxxxxxxxx/.rbenv/versions/2.6.5/bin/rails:23:in `load'
        2: from /Users/xxxxxxxxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/railties-6.0.3.2/exe/rails:10:in '<top (required)>'
        1: from /Users/xxxxxxxxx/.rbenv/versions/2.6.5/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
/Users/xxxxxxxxx/.rbenv/versions/2.6.5/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in 'require': cannot load such file -- rails/cli (LoadError)

同じコマンドによる似たエラー症状なのに、違うメッセージ。Load errorは共通。

もふぃ
もふぃ

たかが、gem をupdateしただけで、こんなことになるなんて…

同じようなエラーがでてしまった人のための対処法を載せておきます。

対処法:Rubyの再インストール

結論から言います。

Rubyを再インストールしたら、両方とも直りました。(一時的に?)

参考リンク

@Okame-chanのマイページ - Qiita
もふぃ
もふぃ

こちらの記事に従って、Rubyのアンインストール、readlineのアップデート、Ruby再インストールしたら、直りました!

上記記事の繰り返しになりますが、下記に手順を記録しておきます。

rubyのアンインストール

$ ruby —v # バージョン確認
ruby 2.6.5
$ which ruby 
# rubyがインストールされている場所を調べる
# .rbenvにあることを確認
$ rbenv uninstall 2.6.5
もふぃ
もふぃ

この時点で、エラーメッセージのででていた該当ファイルが削除されて、なくなりました。

いい兆しが見えました!

readlineのインストール

$ brew install readline

Warning: readline 8.0.4 is already installed and up-to-date
To reinstall 8.0.4, run `brew reinstall readline`

$ brew reinstall readline

私の場合は、既にreadlineがインストールされていましたので、再インストールしました。

$ brew link readline --force #パスを通す。

Rubyの再インストール

$ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)"

上記コマンドを入力することによって、Readlineを通してrubyのインストールが出来るらしい。とりあえず入力。

$ rbenv install 2.6.5

これにて、rubyの再インストールは完了。

確認

$ rbenv local 2.6.5 #rubyの再設定
$ rails s
......
......
......
rbenv: rails: command not found

The `rails' command exists in these Ruby versions:
  2.5.3
  2.6.3
  2.6.6
もふぃ
もふぃ

あれ?Rails sって出来ないの?

じゃあ、とりあえず、2.6.6でやってみるか…。

$ rbenv local 2.6.6
もふぃ
もふぃ

あ!そいや2.6.6は別の方でエラー出てたんだったwww

じゃあ、2.5.3で行こう!

$ rbenv local 2.5.3
もふぃ
もふぃ

Rubyのバージョンを2.5.3に設定変更し、さぁいってくれよ!

$ rails s
Your Ruby version is 2.5.3, but your Gemfile specified 2.6.5
もふぃ
もふぃ

そうか。Gemfileを変更しなくちゃいけないんだな。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.3'   #2.5.3に変更
もふぃ
もふぃ

ついでにBundle installもして…

$ bundle install
$ rails s
....
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
もふぃ
もふぃ

出来たーーーー!!!

まとめ

エラーメッセージの【require “rails/cli”】をググると、Railsの初期化という高度な話になって、絶望しました。

しかし、rubyの再構築で解決することができました。

私の場合は、設定しているrubyをアンインストールし、バージョンを2.5.3にすることで復旧しました。

まだ、rubyのver. 2.6.5 や 2.6.5 でRails sのコマンドが入力できないのが気がかりではありますが…

同じエラー症状が出た人の手助けになればと思います。

参考資料

Railsコマンドを実行するとcannot load such file -- concurrent/map (LoadError)が出て困っています|teratail
 Railsコマンドを叩くとkernel_require.rb:32でエラー発生<エラー発生の原因要素> 以前まで機能していたプロジェクトにてrails sを実行しようとするとエラーが出るようになりました。 以前までと違う点は、MacのNVRAMリセットやSMCリセット、アッ
railsコマンドでエラー cannot load such file -- bundler/setup (LoadError) - Qiita
環境 Ruby 2.2.3 Rails 4.2.4 capistrano 3.4.0 capistrano-bundler 1.1.4 capistrano-rails 1.1.6 capistrano-rbenv 2.0.4...
rails -v cannot load such file -- rails/cli (LoadError)
Ubuntu 14.04. So everything was working fine and I had my terminal open with two tabs - one tab had webbrick running on my sebcoles project, and the other tab ...
gem install したコマンドを実行するとcannot load such file エラーになる|teratail
ちょっとしたツールをRubyで作成したいので以下のサイトを参考に進めています。 bundle exec bin/oreore helloで実行するところま
Railties cannot load such file · Issue #15404 · rails/rails
I stupidly ran bundle update when I meant to only update one gem. I pulled my Gemfile.lock from github and did a new bundle install but my app will no longer ru...

コメント