Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
# File rubygems/commands/sources_command.rb, line 10 def initialize require 'fileutils' super 'sources', 'Manage the sources and cache file RubyGems uses to search for gems' add_option '-a', '--add SOURCE_URI', 'Add source' do |value, options| options[:add] = value end add_option '-l', '--list', 'List sources' do |value, options| options[:list] = value end add_option '-r', '--remove SOURCE_URI', 'Remove source' do |value, options| options[:remove] = value end add_option '-c', '--clear-all', 'Remove all sources (clear the cache)' do |value, options| options[:clear_all] = value end add_option '-u', '--update', 'Update source cache' do |value, options| options[:update] = value end add_proxy_option end
# File rubygems/commands/sources_command.rb, line 40 def defaults_str '--list' end
# File rubygems/commands/sources_command.rb, line 44 def execute options[:list] = !(options[:add] || options[:clear_all] || options[:remove] || options[:update]) if options[:clear_all] then path = Gem::SpecFetcher.fetcher.dir FileUtils.rm_rf path unless File.exist? path then say "*** Removed specs cache ***" else unless File.writable? path then say "*** Unable to remove source cache (write protected) ***" else say "*** Unable to remove source cache ***" end terminate_interaction 1 end end if options[:add] then source_uri = options[:add] uri = URI.parse source_uri begin Gem::SpecFetcher.fetcher.load_specs uri, 'specs' Gem.sources << source_uri Gem.configuration.write say "#{source_uri} added to sources" rescue URI::Error, ArgumentError say "#{source_uri} is not a URI" terminate_interaction 1 rescue Gem::RemoteFetcher::FetchError => e say "Error fetching #{source_uri}:\n\t#{e.message}" terminate_interaction 1 end end if options[:remove] then source_uri = options[:remove] unless Gem.sources.include? source_uri then say "source #{source_uri} not present in cache" else Gem.sources.delete source_uri Gem.configuration.write say "#{source_uri} removed from sources" end end if options[:update] then fetcher = Gem::SpecFetcher.fetcher Gem.sources.each do |update_uri| update_uri = URI.parse update_uri fetcher.load_specs update_uri, 'specs' fetcher.load_specs update_uri, 'latest_specs' end say "source cache successfully updated" end if options[:list] then say "*** CURRENT SOURCES ***" say Gem.sources.each do |source| say source end end end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.