Represents a lazily loaded gem specification, where the full specification is on the source server in rubygems' “quick” index. The proxy object is to be seeded with what we're given from the source's abbreviated index - the full specification will only be fetched when necessary.
Compare this specification against another object. Using sort_obj is compatible with Gem::Specification and other Bundler or RubyGems objects. Otherwise, use the default Object comparison.
# File bundler/remote_specification.rb, line 41
def <=>(other)
if other.respond_to?(:sort_obj)
sort_obj <=> other.sort_obj
else
super
end
end
Because Rubyforge cannot be trusted to provide valid specifications once the remote gem is downloaded, the backend specification will be swapped out.
# File bundler/remote_specification.rb, line 52
def __swap__(spec)
SharedHelpers.ensure_same_dependencies(self, dependencies, spec.dependencies)
@_remote_specification = spec
end
# File bundler/remote_specification.rb, line 74
def dependencies
@dependencies ||= begin
deps = method_missing(:dependencies)
# allow us to handle when the specs dependencies are an array of array of string
# see https://github.com/bundler/bundler/issues/5797
deps = deps.map {|d| d.is_a?(Gem::Dependency) ? d : Gem::Dependency.new(*d) }
deps
end
end
Needed before installs, since the arch matters then and quick specs don't bother to include the arch in the platform string
# File bundler/remote_specification.rb, line 26
def fetch_platform
@platform = _remote_specification.platform
end
# File bundler/remote_specification.rb, line 30
def full_name
if platform == Gem::Platform::RUBY || platform.nil?
"#{@name}-#{@version}"
else
"#{@name}-#{@version}-#{platform}"
end
end
# File bundler/remote_specification.rb, line 86
def git_version
return unless loaded_from && source.is_a?(Bundler::Source::Git)
" #{source.revision[0..6]}"
end
# File bundler/remote_specification.rb, line 107
def respond_to?(method, include_all = false)
super || _remote_specification.respond_to?(method, include_all)
end
Create a delegate used for sorting. This strategy is copied from RubyGems 2.23 and ensures that Bundler's specifications can be compared and sorted with RubyGems' own specifications.
@see #<=> @see Gem::Specification#sort_obj
@return [Array] an object you can use to compare and sort this
specification against other specifications
# File bundler/remote_specification.rb, line 66
def sort_obj
[@name, @version, @platform == Gem::Platform::RUBY ? -1 : 1]
end