マトリョーシカ的日常

ワクワクばらまく明日のブログ。

Ruby on Rails でBundler::LockfileErrorになったけど解決できた話

 去年も書いていたけど、最近はRubyを勉強している。なにか面白そうなプロダクトをつくったみたいからだ。去年はRubyを頑張ってやって、クラスのあたりがなんとなく理解できるようになった。よし、「いよいよRailsだ!」と思ってやってみたら上記のエラーが出た。解決策をググっても情報が散逸していたのでメモ代わりにまとめようと思う。

 環境設定が終了したのち、はじめて `rails s` コマンドをつかってWEBサーバーを立ち上げようとしたら以下のエラーが出てきた。

(前略)
in `warn_for_outdated_bundler_version': 
You must use Bundler 2 or greater with this lockfile. 
(Bundler::LockfileError)

 なんぞこれ、と思って調べてみると...わからん。いまいち説明がわからん。bundlerというのが指定されていたバージョンとは異なるもので、それでエラーが起きている...らしい。
https://odenden.com/you-must-use-bundler-2-or-greater-with-this-lockfile/

 上記の記事を参考に

$ gem list bundler

 をターミナルに入力した。すると、

*** LOCAL GEMS ***
bundler (2.1.2, default: 1.17.2)

 と出た。たぶんこの2.1.2とdefaultの1.17.2が合えば問題ないのだと思う。

やったこと

 
stackoverflow.com

 上記の記事を参考にいろいろやった。私の場合は、ターミナルで

$ gem update --system
$ bundle update --bundler

 を打ったら上記のエラーは直った。railsのバージョンは

$ rails -v

としたら 「Rails 6.0.2.1」と表示された。

まだエラーが出る。

 「これでいいだろう」と思ったがまだエラーが出る。

(略)
No such file or directory @ rb_sysopen - 
(略) hello_world_sample/config/webpacker.yml (Errno::ENOENT)
~~
Webpacker configuration file not found 
(略) hello_world_sample/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - (略) hello_world_sample/config/webpacker.yml (RuntimeError)

 二種類のエラーが出た。Errno::ENOENTとRuntimeErrorだ。調べるとどちらも同じ現象から起きるらしい。
webpackerというのがPCにインストールされてないよ、ということらしい。

vviilloovv.hatenablog.com
qiita.com

 上記の2つの記事を参考にターミナルに打っていく。私の場合はyarnというのがインストールされていなかったらしいので、さきにそれをインストールする。

$ brew install yarn

そして、

$ bundle exec rails webpacker:install


 OK。これで rails sを実行した。

やったー!確認できた!

おわりに

 これからもRailsをいろいろ勉強していくぞ。


Photo by Nicolas J Leclercq on Unsplash