Class: Gem::StubSpecification
- Inherits:
-
BasicSpecification
- Object
- BasicSpecification
- Gem::StubSpecification
- Defined in:
- lib/rubygems/stub_specification.rb
Overview
Gem::StubSpecification reads the stub: line from the gemspec. This prevents us having to eval the entire gemspec in order to find out certain information.
Defined Under Namespace
Classes: StubLine
Constant Summary collapse
- PREFIX =
:nodoc:
"# stub: ".freeze
- OPEN_MODE =
:nodoc:
'r:UTF-8:-'.freeze
Instance Attribute Summary collapse
-
#base_dir ⇒ Object
readonly
Returns the value of attribute base_dir.
-
#gems_dir ⇒ Object
readonly
Returns the value of attribute gems_dir.
Attributes inherited from BasicSpecification
#extension_dir, #full_gem_path, #ignored, #loaded_from
Class Method Summary collapse
- .default_gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
- .gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
Instance Method Summary collapse
-
#activated? ⇒ Boolean
True when this gem has been activated.
-
#build_extensions ⇒ Object
:nodoc:.
- #default_gem? ⇒ Boolean
-
#extensions ⇒ Object
Extensions for this gem.
- #full_name ⇒ Object
-
#initialize(filename, base_dir, gems_dir, default_gem) ⇒ StubSpecification
constructor
A new instance of StubSpecification.
- #missing_extensions? ⇒ Boolean
-
#name ⇒ Object
Name of the gem.
-
#platform ⇒ Object
Platform of the gem.
-
#raw_require_paths ⇒ Object
:nodoc:.
-
#stubbed? ⇒ Boolean
Is there a stub line present for this StubSpecification?.
-
#to_spec ⇒ Object
The full Gem::Specification for this gem, loaded from evalling its gemspec.
-
#valid? ⇒ Boolean
Is this StubSpecification valid? i.e.
-
#version ⇒ Object
Version of the gem.
Methods inherited from BasicSpecification
#contains_requirable_file?, #datadir, default_specifications_dir, #extensions_dir, #full_require_paths, #gem_build_complete_path, #gem_dir, #internal_init, #lib_dirs_glob, #matches_for_glob, #require_paths, #source_paths, #this, #to_fullpath
Methods included from Deprecate
deprecate, skip, skip=, skip_during
Constructor Details
#initialize(filename, base_dir, gems_dir, default_gem) ⇒ StubSpecification
Returns a new instance of StubSpecification.
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rubygems/stub_specification.rb', line 72 def initialize(filename, base_dir, gems_dir, default_gem) super() filename.tap(&Gem::UNTAINT) self.loaded_from = filename @data = nil @name = nil @spec = nil @base_dir = base_dir @gems_dir = gems_dir @default_gem = default_gem end |
Instance Attribute Details
#base_dir ⇒ Object (readonly)
Returns the value of attribute base_dir
70 71 72 |
# File 'lib/rubygems/stub_specification.rb', line 70 def base_dir @base_dir end |
#gems_dir ⇒ Object (readonly)
Returns the value of attribute gems_dir
70 71 72 |
# File 'lib/rubygems/stub_specification.rb', line 70 def gems_dir @gems_dir end |
Class Method Details
.default_gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
62 63 64 |
# File 'lib/rubygems/stub_specification.rb', line 62 def self.default_gemspec_stub(filename, base_dir, gems_dir) new filename, base_dir, gems_dir, true end |
.gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
66 67 68 |
# File 'lib/rubygems/stub_specification.rb', line 66 def self.gemspec_stub(filename, base_dir, gems_dir) new filename, base_dir, gems_dir, false end |
Instance Method Details
#activated? ⇒ Boolean
True when this gem has been activated
88 89 90 91 92 93 94 |
# File 'lib/rubygems/stub_specification.rb', line 88 def activated? @activated ||= begin loaded = Gem.loaded_specs[name] loaded && loaded.version == version end end |
#build_extensions ⇒ Object
:nodoc:
100 101 102 103 104 105 |
# File 'lib/rubygems/stub_specification.rb', line 100 def build_extensions # :nodoc: return if default_gem? return if extensions.empty? to_spec.build_extensions end |
#default_gem? ⇒ Boolean
96 97 98 |
# File 'lib/rubygems/stub_specification.rb', line 96 def default_gem? @default_gem end |
#extensions ⇒ Object
Extensions for this gem
171 172 173 |
# File 'lib/rubygems/stub_specification.rb', line 171 def extensions data.extensions end |
#full_name ⇒ Object
182 183 184 |
# File 'lib/rubygems/stub_specification.rb', line 182 def full_name data.full_name end |
#missing_extensions? ⇒ Boolean
146 147 148 149 150 151 152 |
# File 'lib/rubygems/stub_specification.rb', line 146 def missing_extensions? return false if default_gem? return false if extensions.empty? return false if File.exist? gem_build_complete_path to_spec.missing_extensions? end |
#name ⇒ Object
Name of the gem
157 158 159 |
# File 'lib/rubygems/stub_specification.rb', line 157 def name data.name end |
#platform ⇒ Object
Platform of the gem
164 165 166 |
# File 'lib/rubygems/stub_specification.rb', line 164 def platform data.platform end |
#raw_require_paths ⇒ Object
:nodoc:
142 143 144 |
# File 'lib/rubygems/stub_specification.rb', line 142 def raw_require_paths # :nodoc: data.require_paths end |
#stubbed? ⇒ Boolean
Is there a stub line present for this StubSpecification?
212 213 214 |
# File 'lib/rubygems/stub_specification.rb', line 212 def stubbed? data.is_a? StubLine end |
#to_spec ⇒ Object
The full Gem::Specification for this gem, loaded from evalling its gemspec
189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/rubygems/stub_specification.rb', line 189 def to_spec @spec ||= if @data loaded = Gem.loaded_specs[name] loaded if loaded && loaded.version == version end @spec ||= Gem::Specification.load(loaded_from) @spec.ignored = @ignored if @spec @spec end |
#valid? ⇒ Boolean
Is this StubSpecification valid? i.e. have we found a stub line, OR does the filename contain a valid gemspec?
205 206 207 |
# File 'lib/rubygems/stub_specification.rb', line 205 def valid? data end |
#version ⇒ Object
Version of the gem
178 179 180 |
# File 'lib/rubygems/stub_specification.rb', line 178 def version data.version end |