Class Methods
::
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 22
def initialize
options = {
force: false,
}
options.merge!(install_update_options)
super "update", "Update installed gems to the latest version", options
add_install_update_options
Gem::OptionParser.accept Gem::Version do |value|
Gem::Version.new value
value
end
add_option("--system [VERSION]", Gem::Version,
"Update the RubyGems system software") do |value, opts|
value ||= true
opts[:system] = value
end
add_local_remote_options
add_platform_option
add_prerelease_option "as update targets"
@updated = []
@installer = nil
end
No documentation available
Instance Methods
#
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 97
def execute
if options[:system]
update_rubygems
return
end
gems_to_update = which_to_update(
highest_installed_gems,
options[:args].uniq
)
if options[:explain]
say "Gems to update:"
gems_to_update.each do |name_tuple|
say " #{name_tuple.full_name}"
end
return
end
say "Updating installed gems"
updated = update_gems gems_to_update
installed_names = highest_installed_gems.keys
updated_names = updated.map(&:name)
not_updated_names = options[:args].uniq - updated_names
not_installed_names = not_updated_names - installed_names
up_to_date_names = not_updated_names - not_installed_names
if updated.empty?
say "Nothing to update"
else
say "Gems updated: #{updated_names.join(" ")}"
end
say "Gems already up-to-date: #{up_to_date_names.join(" ")}" unless up_to_date_names.empty?
say "Gems not currently installed: #{not_installed_names.join(" ")}" unless not_installed_names.empty?
end
No documentation available
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 322
def oldest_supported_version
@oldest_supported_version ||=
Gem::Version.new("3.3.3")
end
Oldest version we support downgrading to. This is the version that originally ships with the oldest supported patch version of ruby.
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 195
def preparing_gem_layout_for(version)
if Gem::Version.new(version) >= Gem::Version.new("3.2.a")
yield
else
require "tmpdir"
Dir.mktmpdir("gem_update") do |tmpdir|
FileUtils.mv Gem.plugindir, tmpdir
status = yield
unless status
FileUtils.mv File.join(tmpdir, "plugins"), Gem.plugindir
end
status
end
end
end
No documentation available
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 214
def rubygems_target_version
version = options[:system]
update_latest = version == true
unless update_latest
version = Gem::Version.new version
requirement = Gem::Requirement.new version
return version, requirement
end
version = Gem::Version.new Gem::VERSION
requirement = Gem::Requirement.new ">= #{Gem::VERSION}"
rubygems_update = Gem::Specification.new
rubygems_update.name = "rubygems-update"
rubygems_update.version = version
highest_remote_tup = highest_remote_name_tuple(rubygems_update)
target = highest_remote_tup ? highest_remote_tup.version : version
[target, requirement]
end
No documentation available
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 238
def update_gem(name, version = Gem::Requirement.default)
return if @updated.any? {|spec| spec.name == name }
update_options = options.dup
update_options[:prerelease] = version.prerelease?
@installer = Gem::DependencyInstaller.new update_options
say "Updating #{name}" unless options[:system]
begin
@installer.install name, Gem::Requirement.new(version)
rescue Gem::InstallError, Gem::DependencyError => e
alert_error "Error installing #{name}:\n\t#{e.message}"
end
@installer.installed_gems.each do |spec|
@updated << spec
end
end
No documentation available
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 258
def update_gems(gems_to_update)
gems_to_update.uniq.sort.each do |name_tuple|
update_gem name_tuple.name, name_tuple.version
end
@updated
end
No documentation available
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 269
def update_rubygems
if Gem.disable_system_update_message
alert_error Gem.disable_system_update_message
terminate_interaction 1
end
check_update_arguments
version, requirement = rubygems_target_version
check_latest_rubygems version
check_oldest_rubygems version
installed_gems = Gem::Specification.find_all_by_name "rubygems-update", requirement
installed_gems = update_gem("rubygems-update", requirement) if installed_gems.empty? || installed_gems.first.version != version
return if installed_gems.empty?
install_rubygems installed_gems.first
end
Update RubyGems software to the latest version.
lib/rubygems/commands/update_command.rb
View on GitHub
# File tmp/rubies/ruby-master/lib/rubygems/commands/update_command.rb, line 300
def which_to_update(highest_installed_gems, gem_names)
result = []
highest_installed_gems.each do |_l_name, l_spec|
next if !gem_names.empty? &&
gem_names.none? {|name| name == l_spec.name }
highest_remote_tup = highest_remote_name_tuple l_spec
next unless highest_remote_tup
result << highest_remote_tup
end
result
end
No documentation available