The Engine Yard platform defaults to Bundler version 1.0.10, which throws the above error with newer versions of Rubygems. A common fix for this is to specify the Bundler version.
If the version of Bundler you’re using is 1.0.15, add this to your Gemfile
gem 'bundler', '1.0.15'
and then run
bundle update bundler
from the command line.
Common mistakes
- Make sure to specify
'1.0.15'
and not'~>1.0.15'
to ensure against future changes. - Run
bundle update bundler
from your local machine to create a new Gemfile.lock in your application. Otherwise this change won’t show up.
If you have feedback or questions about this page, add a comment below. If you need help, submit a ticket with Engine Yard Support.
This does not work at all on my instance. The error is thrown when "bundle install" is run, so I'm not sure how adding something to the Gemfile would ever fix it. It never even gets around to reading the Gemfile.
I had to manually SSH into my instance and run 'sudo gem install bundler'. Not terribly convenient, but effective.
This also does not work for me. "bundle update bundler" results in an error, "Could not find gem 'bundler'. Did you mean builder?"
I was trying to update because there is a "ruby" directive in my Gemfile. The "1.0.21" Bundler version doesn't understand that directive, so I was trying to upgrade Bundler. The only way that I could get a successful deployment was by giving up and removing the "ruby" directive from my Gemfile.
Hello Ryan and GovDelivery,
The deploy will install Bundler during the deploy if a Gemfile is detected.
We have a default version such as Bundler 1.1.5 in the v2.0 Engineyard gem release
https://github.com/engineyard/engineyard-serverside/blob/2-0-stable/lib/engineyard-serverside/lockfile_parser.rb#L5
and Bundler 1.3.5 in the v2.3 release
https://github.com/engineyard/engineyard-serverside/blob/v2.3.7/lib/engineyard-serverside/dependency_manager/bundler.rb#L7
Some issue are related to the Bundler version you use, you can set a version inside you Gemfile. In the v2.0 Engineyard gem, we parse the Gemfile.lock in
https://github.com/engineyard/engineyard-serverside/blob/2-0-stable/lib/engineyard-serverside/lockfile_parser.rb#L65-L77
and in the v2.3 Engineyard gem we use updated code
https://github.com/engineyard/engineyard-serverside/blob/v2.3.7/lib/engineyard-serverside/dependency_manager/bundler.rb#L212-L222
so we can detect the version you need.
One thing to note, we track the version of the Engineyard gem you use to deploy and try and use the same version on the dashboard when you click the button. To use the newest deploy version in the UI, just deploy once with the newest CLI version. Another issue is using bundler in custom chef that runs before your initial deploy. Here you can just add your preferred bundler version to the environments gem list and it will be installed during the main cookbook run.
If this is not working, please open a ticket withe the app/environment and we can examine your instances and open a bug report on this.
Regards,
Kevin