mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 05:25:34 +02:00
[rubygems/rubygems] Also disambiguate gems not in the first Gem.path position
7e6e7ccc58
This commit is contained in:
parent
5c573b7652
commit
c2f8e91815
2 changed files with 14 additions and 2 deletions
|
@ -105,6 +105,13 @@ class Gem::BasicSpecification
|
|||
default_gem? ? 1 : -1
|
||||
end
|
||||
|
||||
##
|
||||
# Gems higher up in +gem_path+ take precedence
|
||||
|
||||
def base_dir_priority(gem_path)
|
||||
gem_path.index(base_dir) || gem_path.size
|
||||
end
|
||||
|
||||
##
|
||||
# Returns full path to the directory where gem's extensions are installed.
|
||||
|
||||
|
|
|
@ -771,6 +771,11 @@ class Gem::Specification < Gem::BasicSpecification
|
|||
end
|
||||
private_class_method :clear_load_cache
|
||||
|
||||
def self.gem_path # :nodoc:
|
||||
Gem.path
|
||||
end
|
||||
private_class_method :gem_path
|
||||
|
||||
def self.each_gemspec(dirs) # :nodoc:
|
||||
dirs.each do |dir|
|
||||
Gem::Util.glob_files_in_dir("*.gemspec", dir).each do |path|
|
||||
|
@ -834,7 +839,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|||
next platforms if platforms.nonzero?
|
||||
default_gem = a.default_gem_priority <=> b.default_gem_priority
|
||||
next default_gem if default_gem.nonzero?
|
||||
b.base_dir == Gem.path.first ? 1 : -1
|
||||
a.base_dir_priority(gem_path) <=> b.base_dir_priority(gem_path)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -910,7 +915,7 @@ class Gem::Specification < Gem::BasicSpecification
|
|||
# Return the directories that Specification uses to find specs.
|
||||
|
||||
def self.dirs
|
||||
@@dirs ||= Gem::SpecificationRecord.dirs_from(Gem.path)
|
||||
@@dirs ||= Gem::SpecificationRecord.dirs_from(gem_path)
|
||||
end
|
||||
|
||||
##
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue