Class: Bundler::StubSpecification
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
RemoteSpecification
|
|
|
Instance Chain:
self,
RemoteSpecification,
Comparable,
MatchPlatform,
GemHelpers,
MatchRemoteMetadata,
FetchMetadata,
MatchMetadata
|
|
| Inherits: |
Bundler::RemoteSpecification
|
| Defined in: | lib/bundler/stub_specification.rb |
Constant Summary
GemHelpers - Included
Stub Delegates
- #_remote_specification private
- #activated=(activated) rw
- #activated? ⇒ Boolean rw
- #base_dir=(path) writeonly
- #default_gem? ⇒ Boolean readonly
- #extensions
- #full_gem_path rw
- #full_gem_path=(path) rw
- #full_require_paths
- #gem_build_complete_path
- #ignored? ⇒ Boolean rw
- #load_paths
- #loaded_from
- #manually_installed? ⇒ Boolean readonly
- #matches_for_glob(glob)
-
#missing_extensions? ⇒ Boolean
readonly
This is defined directly to avoid having to loading the full spec.
- #raw_require_paths
- #require_paths
Class Method Summary
Instance Attribute Summary
- #checksum readonly
- #ignored rw
- #source=(source) writeonly
- #stub rw
RemoteSpecification - Inherited
GemHelpers - Included
FetchMetadata - Included
| #matches_current_ruby? | A fallback is included because the original version of the specification API didn’t include that field, so some marshalled specs in the index have it set to |
| #matches_current_rubygems? | |
MatchMetadata - Included
Instance Method Summary
RemoteSpecification - Inherited
| #<=> | Compare this specification against another object. |
| #__swap__ | Because Rubyforge cannot be trusted to provide valid specifications once the remote gem is downloaded, the backend specification will be swapped out. |
| #fetch_platform | Needed before installs, since the arch matters then and quick specs don’t bother to include the arch in the platform string. |
| #full_name, #git_version, #respond_to?, #runtime_dependencies, | |
| #sort_obj | Create a delegate used for sorting. |
| #to_s, #_remote_specification, #method_missing, #to_ary | |
MatchPlatform - Included
GemHelpers - Included
Constructor Details
This class inherits a constructor from Bundler::RemoteSpecification
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Bundler::RemoteSpecification
Class Method Details
.from_stub(stub)
[ GitHub ]Instance Attribute Details
#activated=(activated) (rw)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 63
def activated=(activated) stub.instance_variable_set(:@activated, activated) end
#activated? ⇒ Boolean (rw)
[ GitHub ]
# File 'lib/bundler/stub_specification.rb', line 59
def activated? stub.activated? end
#base_dir=(path) (writeonly)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 95
def base_dir=(path) stub.base_dir = path end
#checksum (readonly)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 12
attr_reader :checksum
#default_gem? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/bundler/stub_specification.rb', line 75
def default_gem? stub.default_gem? end
#full_gem_path (rw)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 79
def full_gem_path stub.full_gem_path end
#full_gem_path=(path) (rw)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 83
def full_gem_path=(path) stub.full_gem_path = path end
#ignored (rw)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 13
attr_accessor :stub, :ignored
#ignored? ⇒ Boolean (rw)
[ GitHub ]
# File 'lib/bundler/stub_specification.rb', line 31
def ignored? return @ignored unless @ignored.nil? @ignored = missing_extensions? return false unless @ignored warn "Source #{source} is ignoring #{self} because it is missing extensions" true end
#manually_installed? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/bundler/stub_specification.rb', line 42
def manually_installed? # This is for manually installed gems which are gems that were fixed in place after a # failed installation. Once the issue was resolved, the user then manually created # the gem specification using the instructions provided by `gem help install` installed_by_version == Gem::Version.new(0) end
#missing_extensions? ⇒ Boolean (readonly)
This is defined directly to avoid having to loading the full spec
# File 'lib/bundler/stub_specification.rb', line 50
def missing_extensions? return false if default_gem? return false if extensions.empty? return false if File.exist? gem_build_complete_path return false if manually_installed? true end
#source=(source) (writeonly)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 15
def source=(source) super # Stub has no concept of source, which means that extension_dir may be wrong # This is the case for git-based gems. So, instead manually assign the extension dir return unless source.respond_to?(:extension_dir_name) unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-") path = File.join(stub.extensions_dir, unique_extension_dir) stub.extension_dir = File.(path) end
#stub (rw)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 13
attr_accessor :stub, :ignored
Instance Method Details
#_remote_specification (private)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 117
def _remote_specification @_remote_specification ||= begin rs = stub.to_spec if rs.equal?(self) # happens when to_spec gets the spec from Gem.loaded_specs rs = Gem::Specification.load(loaded_from) Bundler.rubygems.stub_set_spec(stub, rs) end unless rs raise GemspecError, "The gemspec for #{full_name} at #{loaded_from}" \ " was missing or broken. Try running `gem pristine #{name} -v #{version}`" \ " to fix the cached spec." end rs.source = source rs.base_dir = stub.base_dir rs end end
#extensions
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 67
def extensions stub.extensions end
#full_require_paths
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 87
def full_require_paths stub.full_require_paths end
#gem_build_complete_path
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 71
def gem_build_complete_path stub.gem_build_complete_path end
#load_paths
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 99
def load_paths full_require_paths end
#loaded_from
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 103
def loaded_from stub.loaded_from end
#matches_for_glob(glob)
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 107
def matches_for_glob(glob) stub.matches_for_glob(glob) end
#raw_require_paths
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 111
def raw_require_paths stub.raw_require_paths end
#require_paths
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 91
def require_paths stub.require_paths end
#to_yaml
[ GitHub ]# File 'lib/bundler/stub_specification.rb', line 25
def to_yaml _remote_specification.to_yaml end