rvm + bundler な環境で、以下のようなエラーが出るようになってしまいました。
Error loading RubyGems plugin ....: Could not find rubygems-bundler (>= 0) amongst [....] (Gem::LoadError)
https://rvm.io/integration/bundler/ を見ると、rubygems-bundler なる gem がデフォルトで有効になったらしく binstubs の shebang が ruby
から ruby_noexec_wrapper
に切り替わっていました。
% head -n 1 `which bundle`
#!/usr/bin/env ruby_noexec_wrapper
--path vendor/bundle
のようなローカルのディレクトリに gem をインストールしているケースでは rubygems-bundler は入っていないわけで、当たり前ですが Could not find rubygems-bundler
となることがわかりました。他の環境で ruby_noexec_wrapper
に切り替えてみると、同様のエラーが再現しました。
# rubygems-bundler によって追加された regenerate_binstubs を実行
% gem regenerate_binstubs
...
% head -n 1 `which bundle`
#!/usr/bin/env ruby_noexec_wrapper
% bundle update
Error loading RubyGems plugin ....
rubygems-bundler は bundle exec
を使わずに済む gem のようですが、Bundler がまともに動かなくなるのは意味がないため、rubygems-bundler@github にある通り rubygems-bundler-uninstaller
というコマンドで無効にしました。元の ruby
に書き代わり、エラーも出なくなりました。
% rubygems-bundler-uninstaller
....
% head -n 1 `which bundle`
#!/usr/bin/env ruby
個人的には、確実に Gemfile
で指定した gem を使うために、面倒でも bundle exec
をつけるなり、必要な binstub だけ設置するほうが良いと思います。