Class: Bundler::LazySpecification
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
MatchPlatform ,
GemHelpers
|
|
Inherits: | Object |
Defined in: | lib/bundler/lazy_specification.rb |
Constant Summary
GemHelpers
- Included
Class Method Summary
Instance Attribute Summary
Instance Method Summary
- #==(other)
- #__materialize__
- #full_name
- #git_version
- #identifier
- #respond_to?(*args) ⇒ Boolean
- #satisfies?(dependency) ⇒ Boolean
- #to_lock
- #to_s
- #method_missing(method, *args, &blk) private
- #to_ary private
MatchPlatform
- Included
GemHelpers
- Included
Constructor Details
.new(name, version, platform, source = nil) ⇒ LazySpecification
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &blk) (private)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 114
def method_missing(method, *args, &blk) raise "LazySpecification has not been materialized yet (calling :#{method} #{args.inspect})" unless @specification return super unless respond_to?(method) @specification.send(method, *args, &blk) end
Instance Attribute Details
#dependencies (readonly)
[ GitHub ]#name (readonly)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 25
attr_reader :name, :version, :dependencies, :platform
#platform (readonly)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 25
attr_reader :name, :version, :dependencies, :platform
#remote (rw)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 26
attr_accessor :source, :remote
#source (rw)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 26
attr_accessor :source, :remote
#version (readonly)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 25
attr_reader :name, :version, :dependencies, :platform
Instance Method Details
#==(other)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 45
def ==(other) identifier == other.identifier end
#__materialize__
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 70
def __materialize__ search_object = Bundler.feature_flag.specific_platform? || Bundler.settings[:force_ruby_platform] ? self : Dependency.new(name, version) @specification = if source.is_a?(Source::Gemspec) && source.gemspec.name == name source.gemspec.tap {|s| s.source = source } else search = source.specs.search(search_object).last if search && Gem::Platform.new(search.platform) != Gem::Platform.new(platform) && !search.runtime_dependencies.-(dependencies.reject {|d| d.type == :development }).empty? Bundler.ui.warn "Unable to use the platform-specific (#{search.platform}) version of #{name} (#{version}) " \ "because it has different dependencies from the #{platform} version. " \ "To use the platform-specific version of the gem, run `bundle config set specific_platform true` and install again." search = source.specs.search(self).last end search.dependencies = dependencies if search && (search.is_a?(RemoteSpecification) || search.is_a?(EndpointSpecification)) search end end
#full_name
[ GitHub ]#git_version
[ GitHub ]#identifier
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 99
def identifier @__identifier ||= Identifier.new(name, version, source, platform, dependencies) end
#respond_to?(*args) ⇒ Boolean
# File 'lib/bundler/lazy_specification.rb', line 87
def respond_to?(*args) super || @specification ? @specification.respond_to?(*args) : nil end
#satisfies?(dependency) ⇒ Boolean
#to_ary (private)
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 110
def to_ary nil end
#to_lock
[ GitHub ]# File 'lib/bundler/lazy_specification.rb', line 53
def to_lock out = String.new if platform == Gem::Platform::RUBY || platform.nil? out << " #{name} (#{version})\n" else out << " #{name} (#{version}-#{platform})\n" end dependencies.sort_by(&:to_s).uniq.each do |dep| next if dep.type == :development out << " #{dep.to_lock}\n" end out end