diff options
Diffstat (limited to 'lib/rubygems/commands/install_command.rb')
-rw-r--r-- | lib/rubygems/commands/install_command.rb | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/lib/rubygems/commands/install_command.rb b/lib/rubygems/commands/install_command.rb index 56ff8fc564..4485eb12e8 100644 --- a/lib/rubygems/commands/install_command.rb +++ b/lib/rubygems/commands/install_command.rb @@ -69,7 +69,7 @@ class Gem::Commands::InstallCommand < Gem::Command o[:explain] = v end - @installed_specs = nil + @installed_specs = [] end def arguments # :nodoc: @@ -200,10 +200,8 @@ to write the specification by hand. For example: req = Gem::Requirement.create(version) - if options[:ignore_dependencies] - inst = Gem::Installer.new name, options - inst.install - @installed_specs.push(inst.spec) + if options[:ignore_dependencies] then + install_gem_without_dependencies name, req else inst = Gem::DependencyInstaller.new options @@ -227,6 +225,30 @@ to write the specification by hand. For example: end end + def install_gem_without_dependencies name, req # :nodoc: + gem = nil + + if remote? then + dependency = Gem::Dependency.new name, req + dependency.prerelease = options[:prerelease] + + fetcher = Gem::RemoteFetcher.fetcher + gem = fetcher.download_to_cache dependency + end + + if local? and not gem then + source = Gem::Source::Local.new + spec = source.find_gem name, req + + gem = source.download spec + end + + inst = Gem::Installer.new gem, options + inst.install + + @installed_specs.push(inst.spec) + end + def install_gems # :nodoc: exit_code = 0 |