Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Browse files

Merge v1.1.4 from branch '1-1-stable'

  • Loading branch information...
commit 07df32229a754f34828199a3b5c216175f82a095 2 parents 63a6a93 + e1d71e7
@indirect indirect authored
@@ -32,6 +32,15 @@ Documentation:
- Add basic documentation for bin_path and bundle_path (@radar)
- Add documentation for the run method in Bundler::Installer
+## 1.1.4 (May 27, 2012)
+ - Use `latest_release` in Capistrano and Vlad integration (#1264)
+ - Unknown exceptions now link to ISSUES for help instead of a new ticket
+ - When OpenSSL is missing, provide instructions for fixing (#1776 etc.)
+ - Correct inline help for `clean --force` (@dougbarth, #1911)
+ - Work around a Ruby 1.9.3p194 bug in Psych when config files are empty
## 1.1.3 (March 23, 2012)
@@ -1,11 +1,21 @@
# Bundler Issues
-## Troubleshooting
+So! You're having problems with Bundler. This file is here to help. If you're running into an error, try reading the rest of this file for help. If you can't figure out how to solve your problem, there are also instructions on how to report a bug.
+## Documentation
-Instructions for common Bundler use-cases can be found on the [Bundler documentation site](
+Instructions for common Bundler uses can be found on the [Bundler documentation site](
Detailed information about each Bundler command, including help with common problems, can be found in the [Bundler man pages](
+## Troubleshooting
+### Heroku errors
+Please open a ticket with Heroku if you're having trouble deploying. They have a professional support team who can help you resolve Heroku issues far better than the Bundler team can. If the problem that you are having turns out to be a bug in Bundler itself, Heroku support can get the exact details to us.
+### Something else
After reading the documentation, try these troubleshooting steps:
# remove user-specific gems and git repos
@@ -26,24 +36,9 @@ After reading the documentation, try these troubleshooting steps:
# try to install one more time
bundle install
-## Frequently encountered issues
-### Heroku errors
-Open a ticket with Heroku. If the issue somehow turns out to be with Bundler itself, the Heroku support team will forward the details of your issue to us.
-### REE and Zlib::GzipFile::Error
-Ruby Enterprise Edition users may see a `Zlib::GzipFile::Error` while installing gems. It is due to [a bug in REE]( You may be able to resolve the issue by upgrading REE, or changing to a different interpreter.
-### Rake activation error
-Anyone who has installed the Spork gem may see activation errors while running `rake` directly. This is because old versions of Spork would [install the newest rake using a mkmf file]( To resolve the issue, update the Spork version requirement in your Gemfile to at least `"~>0.8.5"` or `"~>0.9.0.rc8"`.
## Reporting unresolved problems
-Instructions that allow the Bundler team to reproduce your issue are vitally important. When you report a bug, please include the following information:
+The Bundler team needs to know some things in order to diagnose and hopefully fix the bug you've found. When you report a bug, please include the following information:
- The command you ran
- Exception backtrace(s), if any
@@ -57,11 +52,12 @@ Instructions that allow the Bundler team to reproduce your issue are vitally imp
- Whether you have the `rubygems-bundler` gem, which can break gem binares
- Whether you have the `open_gem` gem, which can cause rake activation conflicts
If you are using Rails 2.3, please also include:
- Your boot.rb file
- Your preinitializer.rb file
- Your environment.rb file
-[Create a gist]( containing all of that information, then visit the [Bundler issue tracker]( and create a new ticket describing your problem and linking to your gist.
+[Create a gist]( containing all of that information, then visit the [Bundler issue tracker]( and [create a new ticket]( describing your problem and linking to your gist.
+Thanks for reporting issues and making Bundler better!
3  bin/bundle
@@ -8,6 +8,7 @@ $:.each do |path|
require 'bundler/cli'
require 'bundler/friendly_errors'
-Bundler.with_friendly_errors {Bundler::CLI.start }
+Bundler.with_friendly_errors { Bundler::CLI.start }
14 lib/bundler/fetcher.rb
@@ -1,5 +1,5 @@
require 'uri'
-require 'net/http/persistent'
+require 'bundler/vendored_persistent'
module Bundler
# Handles all the fetching with the rubygems server
@@ -104,6 +104,16 @@ def specs(gem_names, source)
+ rescue LoadError => e
+ if e.message.include?("cannot load such file -- openssl")
+ raise InstallError,
+ "\nCould not load OpenSSL." \
+ "\nYou must recompile Ruby with OpenSSL support or change the sources in your" \
+ "\nGemfile from 'https' to 'http'. Instructions for compiling with OpenSSL" \
+ "\nusing RVM are available at"
+ else
+ raise e
+ end
# fetch index
@@ -208,7 +218,7 @@ def fetch_all_remote_specs
Bundler.ui.debug "Could not fetch prerelease specs from #{strip_user_pass_from_uri(@remote_uri)}"
rescue Gem::RemoteFetcher::FetchError
- raise Bundler::HTTPError, "Could not reach #{strip_user_pass_from_uri(@remote_uri)}"
+ raise HTTPError, "Could not reach #{strip_user_pass_from_uri(@remote_uri)}"
return spec_list
8 lib/bundler/friendly_errors.rb
@@ -13,11 +13,9 @@ def self.with_friendly_errors
rescue SystemExit => e
exit e.status
rescue Exception => e
- Bundler.ui.error "Unfortunately, a fatal error has occurred. " +
- "Please report this error to the Bundler issue tracker at " +
- " so that we can fix it. " +
- "Please include the full output of the command, your Gemfile and Gemfile.lock. " +
- "Thanks!"
+ Bundler.ui.error(
+ "Unfortunately, a fatal error has occurred. Please see the Bundler \n" \
+ "troubleshooting documentation at Thanks! \n")
raise e
1  lib/bundler/installer.rb
@@ -124,6 +124,7 @@ def install_gem_from_spec(spec, standalone = false)
msg = "An error occurred while installing #{} (#{spec.version}),"
msg << " and Bundler cannot continue.\nMake sure that `gem install"
msg << " #{} -v '#{spec.version}'` succeeds before bundling."
+ Bundler.ui.debug e.backtrace.join("\n")
raise Bundler::InstallError, msg
3  lib/bundler/vendored_persistent.rb
@@ -0,0 +1,3 @@
+vendor = File.expand_path('../vendor', __FILE__)
+$:.unshift(vendor) unless $:.include?(vendor)
+require 'net/http/persistent'
3  lib/bundler/vendored_thor.rb
@@ -2,6 +2,7 @@
Bundler.ui.warn "Thor has already been required. " +
"This may cause Bundler to malfunction in unexpected ways."
-$:.unshift File.expand_path('../vendor', __FILE__)
+vendor = File.expand_path('../vendor', __FILE__)
+$:.unshift(vendor) unless $:.include?(vendor)
require 'thor'
require 'thor/actions'
34 spec/install/gems/dependency_api_spec.rb
@@ -399,4 +399,38 @@
out.should_not include("#{user}:#{password}")
+ context "when ruby is compiled without openssl" do
+ before do
+ # Install a monkeypatch that reproduces the effects of openssl being
+ # missing when the fetcher runs, as happens in real life. The reason
+ # we can't just overwrite openssl.rb is that Artifice uses it.
+ bundled_app("broken_ssl").mkpath
+ bundled_app("broken_ssl/openssl.rb").open("w") do |f|
+ f.write <<-RUBY
+ $:.delete File.expand_path("..", __FILE__)
+ require 'openssl'
+ require 'bundler'
+ class Bundler::Fetcher
+ def fetch(*)
+ raise LoadError, "cannot load such file -- openssl"
+ end
+ end
+ end
+ end
+ it "explains what to do to get it" do
+ gemfile <<-G
+ source "#{source_uri.gsub(/http/, 'https')}"
+ gem "rack"
+ G
+ bundle :install, :artifice => "endpoint",
+ :env => {"RUBYOPT" => "-I#{bundled_app("broken_ssl")}"}
+ out.should include("Could not load OpenSSL.")
+ end
+ end
Please sign in to comment.
Something went wrong with that request. Please try again.