bundle execのエラーで少しだけ立ち止まった話
とあるgemを手元の環境で試したく、
$ bundle exec ruby hogehoge.rb
と実行したところ下記エラーが出てしまった。
Gem::GemNotFoundException: can't find gem bundler (= 2.4.7) with executable bundle
同じコンソールでBundlerのバージョン確認をして、 Gemfile.lock記載のBundlerバージョンを確認してみたが、どちらも同じ2.4.7。 なんでだろーとエラーログをもう少し読むと。
... /Users/foobar/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/libexec/bundle:45:in `block in <top (required)>' /Users/foobar/.rbenv/versions/3.2.1/lib/ruby/site_ruby/3.2.0/bundler/friendly_errors.rb:117:in `with_friendly_errors' /Users/foobar/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/gems/bundler-2.4.6/libexec/bundle:33:in `<top (required)>' ...
ありゃ?2.4.6? 上記ディレクトリを調べると確かに2.4.6と2.4.7をインストール済みだった。 そして調べてみると2.4.6がdefaultに指定してしまっていた。
$ gem list bundler *** LOCAL GEMS *** bundler (2.4.7, default: 2.4.6)
ということで、2.4.6をdefaultから外してやりました。 (gemのdefault設定を解除したい場合、defaultディレクトリ配下のファイルを削除してやる。
$ rm /Users/foobar/.rbenv/versions/3.2.1/lib/ruby/gems/3.2.0/specifications/default/bundler-2.4.6.gemspec
で再度、
$ bundle exec ruby hogehoge.rb
と実行したところエラーが消えて正常に動作しました。 よかった〜