diff options
Diffstat (limited to 'Library/Homebrew/utils.rb')
| -rw-r--r-- | Library/Homebrew/utils.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index c37633e41..60af39d93 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -221,6 +221,38 @@ module Homebrew EOS end + def run_bundler_if_needed! + return unless Pathname.glob("#{HOMEBREW_GEM_HOME}/bin/*").empty? + + if Gem::Specification.find_all_by_name("bundler").empty? + ohai "Installing Bundler..." + + # Do `gem install [...]` without having to spawn a separate process or + # having to find the right `gem` binary for the running Ruby interpreter. + require "rubygems/commands/install_command" + install_cmd = Gem::Commands::InstallCommand.new + install_cmd.handle_options(%w[--no-ri --no-rdoc bundler]) + exit_code = 1 # Should not matter as `install_cmd.execute` always throws. + begin + install_cmd.execute + rescue Gem::SystemExitException => e + exit_code = e.exit_code + end + odie "Failed to install Bundler!" if exit_code.nonzero? + end + + HOMEBREW_REPOSITORY.cd do + unless quiet_system("bundle", "check") + ohai "Installing RubyGems..." + success = system "bundle", "install", + "--path", "Library/Homebrew/vendor", + "--standalone", + "--jobs", "3" + odie "Failed to install RubyGems!" unless success + end + end + end + # Hash of Module => Set(method_names) @injected_dump_stat_modules = {} |
