Bundler: can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException) during bundle install with gem
Ruby on-RailsRubyRubygemsBundleBundlerRuby on-Rails Problem Overview
I'm executing the following script:
gem install rdoc --no-document
gem install bundle
bundle
output:
+ gem install rdoc --no-document
Successfully installed rdoc-6.1.1
1 gem installed
+ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 2 seconds
1 gem installed
1 gem installed
+ bundle install
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
from /srv/myuser/.gem/ruby/2.5.0/bin/bundle:23:in `<main>'
I've added /srv/myuser/.gem/ruby/2.5.0/bin
to my path so I was able to install gems.
the gem env
shows
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.7
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/2.5.0
- USER INSTALLATION DIRECTORY: /srv/myuser/.gem/ruby/2.5.0
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /srv/myuser/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/2.5.0
- /srv/myuser/.gem/ruby/2.5.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--user-install"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/sbin
- /usr/local/bin
- /usr/bin
gem list
shows the installed gems.
I can also find bundle when I perform:
ls -ltrah /srv/myuser/.gem/ruby/2.5.0/bin
I've also tried to install bundler but that didn't also help. What am I doing wrong?
gem which bundle
is showing nothing.gem spec bundle
is showing it.
Update: I tried to install bundler before running bundle but the same issue appears while:
gem list bundle
shows
bundle (0.0.1)
bundler (2.0.1)
Ruby on-Rails Solutions
Solution 1 - Ruby on-Rails
Bundler version 2 introduced a new feature to automatically use the version of Bundler specified in the Gemfile.lock
of your project. Thus, if you have an existing Gemfile.lock
with a line like this at the bottom
BUNDLED WITH
1.17.3
Bundler will try to run with a Bundler version < 2.0. Since you just have Bundler 2.0.1 (and Rubygems >= 2.7.0) installed, this fails with this rather unhelpful error message.
To fix this, you could
- remove the lines from your
Gemfile.lock
and to use bundler 2.x everywhere from now on, or - install a bundler 1.x version with
gem install bundler -v '< 2.0'
to use the appropriate version as specified by yourGemfile.lock
.
More information about this can be found on the Bundler blog.
Solution 2 - Ruby on-Rails
As per the description mentioned in the post , before running the below mentioned command:
bundle install
in the script, you need to run the below command:
gem install bundler
So, the sequence of commands to work would be:
gem install bundler
bundle install
Update the bundler command if if does not work to:
gem install bundler -v '1.17.3'
Reason for the break in functionalities in bundler 2.0 is given in below mentioned link:
https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html
Solution 3 - Ruby on-Rails
I couldn’t even do bundle -v
. This sorted it out:
gem update --system
Got the info from here (similar problem): https://stackoverflow.com/questions/47026174/find-spec-for-exe-cant-find-gem-bundler-0-a-gemgemnotfoundexception
Probably some version mismatch between ruby + gem + bundler
Solution 4 - Ruby on-Rails
gem install bundler -v '< 2.0'
Solution 5 - Ruby on-Rails
I had the same problem recently. In my case I have installed a version on bundler different from what is logged in the Gemfile.lock. Please check
Solution 6 - Ruby on-Rails
I faced this same issue. The issue is caused by the fact that RubyGems cannot find an executable bundle for the bundler gem on the system
To fix it, first run
gem install bundler
if you don't have bundler gem installed locally, then run
gem update --system
That's all
I hope this helps
Solution 7 - Ruby on-Rails
You've to install the exact version of Bundler that RubyGems is looking for by running:
$ gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
Solution 8 - Ruby on-Rails
I just faced the same error today. The bundler version which I had installed in my system previously was: 1.16.6
Followed the instructions in the official bundler docs on How to Upgrade to Bundler 2 and the below two steps did the trick:
gem install bundler
(Helps you get the latest version of bundler which as of today is 2.0.2)bundle update --bundler
Solution 9 - Ruby on-Rails
I saw a similar error message for the travis bundle after upgrading mac os to Catalina.
Traceback (most recent call last):
2: from /usr/local/bin/travis:22:in `<main>'
1: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:263:in `bin_path'
/usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:284:in `find_spec_for_exe': can't find gem travis (>= 0.a) with executable travis (Gem::GemNotFoundException)
To resolve the issue, I reinstalled travis from source.
brew remove travis;
brew install -s travis
Solution 10 - Ruby on-Rails
This may help solve the problem
bundle update --bundler
Solution 11 - Ruby on-Rails
YEP, this works:
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
From: https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html