LoginSignup
26
28

More than 3 years have passed since last update.

Railsアプリ開発で陥りがちなエラーとその対策集

Last updated at Posted at 2020-03-08

この記事は

表題の通り、Railsアプリ開発で陥りがちなエラーとその対策をまとめた記事です。
主にrbenvによるバージョン切り替えができてなかったり、元に戻ってしまったりすることに起因することが多いです(体感)。

随時追記していきます。
間違いなどあれば、ぜひツッコんでいただけるとありがたいです。

rails sまたはbundle update --bundlerすると、You must use Bundler 2 or greater with this lockfile.というエラーが出る

これはbundlerのバージョンが2.0.1以降で出るエラーだそうです。
今のところ、それより前のbundlerのバージョンに戻すのが一番早そう。

対処法

こちらのQiita記事を参照すると、うまくいきました。

※Gemfile.lockを削除するというロックなことをするので、テスト用のブランチを作って作業して、問題ないことが確認できたらmasterにマージするといった手順を踏むことをオススメします。

(1) Gemfile.lockを削除

$ rm Gemfile.lock

(2) バージョン1.17.3のbundlerをインストール

$ gem install bundler -v 1.17.3

(3) (2)のbundlerを用いて再度gemを入れ直す

$ bundler _1.17.3_ install

(4) 新しくできたGemfile.lockを参照し、最後の方にBUNDLED WITH 1.17.3と書いてあることを確認する

これで万事解決です。

bundler -vを実行するとCould not find 'bundler' (2.1.4)...というエラーが発生する

エラー全文は下記です。

Could not find 'bundler' (2.1.4) required by your /Users/<ユーザー名>/<ルートディレクトリ名>/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.1.4`

ここで言われてるのは、「Gemfile.lockbundler 2.1.4が指定してあるけど、そのバージョンのbundlerが見当たらないよ?」ということです。
これ、rbenvで指定してたRubyのバージョンがいつの間にか元に戻っていたりすると起きる現象です。
(今回の場合、rbenvで指定してたRubyバージョンにはbundler 2.1.4が入ってたけど、デフォルトのRubyバージョンにはbundler 2.1.4が入ってない。rbenvではRubyのバージョンごとにgemをインストールする必要があります)

対処法

なので、~/.bash_profileの内容をもう一度読み込ませてみます。

$ source ~/.bash_profile

この状態で、また先ほどのエラーと同じ手順を踏めばOKです。

Your Ruby version is 2.6.3, but your Gemfile specified 2.5.7というエラーメッセージが表示される

これもrbenvで指定していたバージョンが元に戻ってしまって起きる現象です。

対処法

~/.bash_profileを再読み込みします。

$ source ~/.bash_profile

You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.などと表示される

権限がないと言われています。

対処法

俺が管理者だ!と言わんばかりに、実行したコマンドの冒頭にsudoをつけて再度実行してみましょう。
※ただしsudoをつけるとなんでもできてしまうので、本当に実行して良いコマンドかどうかはよく確認の上実行してくださいね。

参照

26
28
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
26
28