とらやん日誌

プログラマの雑記

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

と実行したところエラーが消えて正常に動作しました。 よかった〜