この記事は
表題の通り、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.lock
にbundler 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
をつけるとなんでもできてしまうので、本当に実行して良いコマンドかどうかはよく確認の上実行してくださいね。
参照
- You must use Bundler 2 or greater with this lockfile.
https://qiita.com/yoshijbbsk1121/items/87250501b32c6433943e