aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-23 00:35:09 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-23 00:35:09 +0000
commit6fe32d72667945605ef710395706e04491bfd86a (patch)
tree7fe4b8f779ff75067b45f48502864fb05787cee7 /lib/rubygems.rb
parentc47c095b9740e7c19d6fdca29ab661c1089221d4 (diff)
downloadruby-6fe32d72667945605ef710395706e04491bfd86a.tar.gz
* lib/rubygems/commands/check_command.rb: Added --doctor and --dry-run
options to clean up after failed uninstallation. * test/rubygems/test_gem_commands_check_command.rb: Test for above. * lib/rubygems/commands/push_command.rb: Allow pushes from RubyGems 2.0.0.preview3 * lib/rubygems/commands/update_command.rb: Use Gem.ruby_version * lib/rubygems/dependency.rb: Update style. * lib/rubygems/installer.rb: Ensure installed gem specifications will be useable. Refactor. * test/rubygems/test_gem_installer.rb: ditto. * lib/rubygems/validator.rb: Fixed bug with unreadable files. * lib/rubygems.rb: Fixed broken methods. * test/rubygems/test_gem.rb: Test for above. * test/rubygems/test_gem_commands_push_command.rb: Fixed overridden Gem.latest_rubygems_version git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38564 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems.rb')
-rw-r--r--lib/rubygems.rb57
1 files changed, 37 insertions, 20 deletions
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
index 29bbb586b5..77d1650056 100644
--- a/lib/rubygems.rb
+++ b/lib/rubygems.rb
@@ -98,7 +98,7 @@
require 'rbconfig'
module Gem
- VERSION = '2.0.0.preview2.2'
+ VERSION = '2.0.0.preview3'
end
# Must be first since it unloads the prelude from 1.9.2
@@ -123,7 +123,22 @@ module Gem
/wince/i,
]
- GEM_DEP_FILES = %w!gem.deps.rb Gemfile Isolate!
+ GEM_DEP_FILES = %w[
+ gem.deps.rb
+ Gemfile
+ Isolate
+ ]
+
+ ##
+ # Subdirectories in a gem repository
+
+ REPOSITORY_SUBDIRECTORIES = %w[
+ build_info
+ cache
+ doc
+ gems
+ specifications
+ ]
@@win_platform = nil
@@ -388,7 +403,7 @@ module Gem
require 'fileutils'
- %w[cache build_info doc gems specifications].each do |name|
+ REPOSITORY_SUBDIRECTORIES.each do |name|
subdir = File.join dir, name
next if File.exist? subdir
FileUtils.mkdir_p subdir rescue nil # in case of perms issues -- lame
@@ -750,34 +765,36 @@ module Gem
@ruby
end
- # DOC: needs doc'd or :nodoc'd
+ ##
+ # Returns the latest release-version specification for the gem +name+.
+
def self.latest_spec_for name
- dependency = Gem::Dependency.new name
- fetcher = Gem::SpecFetcher.fetcher
- spec_tuples = fetcher.find_matching dependency
+ dependency = Gem::Dependency.new name
+ fetcher = Gem::SpecFetcher.fetcher
+ spec_tuples, = fetcher.spec_for_dependency dependency
- match = spec_tuples.select { |(n, _, p), _|
- n == name and Gem::Platform.match p
- }.sort_by { |(_, version, _), _|
- version
- }.last
+ spec, = spec_tuples.first
- match and fetcher.fetch_spec(*match)
+ spec
end
- # DOC: needs doc'd or :nodoc'd
- def self.latest_version_for name
- spec = latest_spec_for name
- spec and spec.version
- end
+ ##
+ # Returns the latest release version of RubyGems.
- # DOC: needs doc'd or :nodoc'd
def self.latest_rubygems_version
- latest_version_for("rubygems-update") or
+ latest_version_for('rubygems-update') or
raise "Can't find 'rubygems-update' in any repo. Check `gem source list`."
end
##
+ # Returns the version of the latest release-version of gem +name+
+
+ def self.latest_version_for name
+ spec = latest_spec_for name
+ spec and spec.version
+ end
+
+ ##
# A Gem::Version for the currently running ruby.
def self.ruby_version