diff options
Diffstat (limited to 'lib/rubygems.rb')
-rw-r--r-- | lib/rubygems.rb | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 487d7de2ff..03facb6430 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -296,10 +296,7 @@ module Gem def self.activate_bin_path name, exec_name, requirement # :nodoc: spec = find_spec_for_exe name, exec_name, [requirement] - Gem::LOADED_SPECS_MUTEX.synchronize do - spec.activate - finish_resolve - end + Gem::LOADED_SPECS_MUTEX.synchronize { spec.activate } spec.bin_file exec_name end @@ -596,6 +593,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # Zlib::GzipReader wrapper that unzips +data+. def self.gunzip(data) + require 'rubygems/util' Gem::Util.gunzip data end @@ -603,6 +601,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # Zlib::GzipWriter wrapper that zips +data+. def self.gzip(data) + require 'rubygems/util' Gem::Util.gzip data end @@ -610,6 +609,7 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # A Zlib::Inflate#inflate wrapper def self.inflate(data) + require 'rubygems/util' Gem::Util.inflate data end @@ -1147,6 +1147,8 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} path = path.dup if path == "-" then + require 'rubygems/util' + Gem::Util.traverse_parents Dir.pwd do |directory| dep_file = GEM_DEP_FILES.find { |f| File.file?(f) } @@ -1165,24 +1167,18 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} raise ArgumentError, "Unable to find gem dependencies file at #{path}" end - ENV["BUNDLE_GEMFILE"] ||= File.expand_path(path) - require 'rubygems/user_interaction' - Gem::DefaultUserInteraction.use_ui(ui) do - require "bundler/postit_trampoline" unless ENV["BUNDLE_DISABLE_POSTIT"] - require "bundler" - @gemdeps = Bundler.setup - Bundler.ui = nil - @gemdeps.requested_specs.map(&:to_spec).sort_by(&:name) - end - rescue => e - case e - when Gem::LoadError, Gem::UnsatisfiableDependencyError, (defined?(Bundler::GemNotFound) ? Bundler::GemNotFound : Gem::LoadError) - warn e.message - warn "You may need to `gem install -g` to install missing gems" - warn "" - else - raise + rs = Gem::RequestSet.new + @gemdeps = rs.load_gemdeps path + + rs.resolve_current.map do |s| + sp = s.full_spec + sp.activate + sp end + rescue Gem::LoadError, Gem::UnsatisfiableDependencyError => e + warn e.message + warn "You may need to `gem install -g` to install missing gems" + warn "" end class << self @@ -1228,8 +1224,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} prefix_pattern = /^(#{prefix_group})/ end - suffix_pattern = /#{Regexp.union(Gem.suffixes)}\z/ - spec.files.each do |file| if new_format file = file.sub(prefix_pattern, "") @@ -1237,7 +1231,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} end @path_to_default_spec_map[file] = spec - @path_to_default_spec_map[file.sub(suffix_pattern, "")] = spec end end @@ -1245,7 +1238,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} # Find a Gem::Specification of default gem from +path+ def find_unresolved_default_spec(path) - @path_to_default_spec_map[path] + Gem.suffixes.each do |suffix| + spec = @path_to_default_spec_map["#{path}#{suffix}"] + return spec if spec + end + nil end ## @@ -1331,7 +1328,6 @@ An Array (#{env.inspect}) was passed in from #{caller[3]} autoload :SourceList, 'rubygems/source_list' autoload :SpecFetcher, 'rubygems/spec_fetcher' autoload :Specification, 'rubygems/specification' - autoload :Util, 'rubygems/util' autoload :Version, 'rubygems/version' require "rubygems/specification" |