Class Methods
    
  
          
            .
          
          
        
      
          
            3.3
          
          
            View on GitHub
            
          
        
        
          
            # File tmp/rubies/ruby-3.3.0/lib/rubygems/commands/fetch_command.rb, line 11
def initialize
  defaults = {
    suggest_alternate: true,
    version: Gem::Requirement.default,
  }
  super "fetch", "Download a gem and place it in the current directory", defaults
  add_bulk_threshold_option
  add_proxy_option
  add_source_option
  add_clear_sources_option
  add_version_option
  add_platform_option
  add_prerelease_option
  add_option "--[no-]suggestions", "Suggest alternates when gems are not found" do |value, options|
    options[:suggest_alternate] = value
  end
end
          
        
      No documentation available
      
      Instance Methods
    
  
          
            #
          
          
        
      
          
            3.3
          
          
            View on GitHub
            
          
        
        
          
            # File tmp/rubies/ruby-3.3.0/lib/rubygems/commands/fetch_command.rb, line 64
def execute
  check_version
  version = options[:version]
  platform  = Gem.platforms.last
  gem_names = get_all_gem_names_and_versions
  gem_names.each do |gem_name, gem_version|
    gem_version ||= version
    dep = Gem::Dependency.new gem_name, gem_version
    dep.prerelease = options[:prerelease]
    suppress_suggestions = !options[:suggest_alternate]
    specs_and_sources, errors =
      Gem::SpecFetcher.fetcher.spec_for_dependency dep
    if platform
      filtered = specs_and_sources.select {|s,| s.platform == platform }
      specs_and_sources = filtered unless filtered.empty?
    end
    spec, source = specs_and_sources.max_by {|s,| s }
    if spec.nil?
      show_lookup_failure gem_name, gem_version, errors, suppress_suggestions, options[:domain]
      next
    end
    source.download spec
    say "Downloaded #{spec.full_name}"
  end
end
          
        
      No documentation available