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: "
- OPEN_MODE =
:nodoc:
if Object.const_defined? :Encoding then 'r:UTF-8:-' else 'r' end
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
Constructor Details
#initialize(filename, base_dir, gems_dir, default_gem) ⇒ StubSpecification
Returns a new instance of StubSpecification.
73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/rubygems/stub_specification.rb', line 73 def initialize filename, base_dir, gems_dir, default_gem super() filename.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.
71 72 73 |
# File 'lib/rubygems/stub_specification.rb', line 71 def base_dir @base_dir end |
#gems_dir ⇒ Object (readonly)
Returns the value of attribute gems_dir.
71 72 73 |
# File 'lib/rubygems/stub_specification.rb', line 71 def gems_dir @gems_dir end |
Class Method Details
.default_gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
63 64 65 |
# File 'lib/rubygems/stub_specification.rb', line 63 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
67 68 69 |
# File 'lib/rubygems/stub_specification.rb', line 67 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
89 90 91 92 93 94 95 |
# File 'lib/rubygems/stub_specification.rb', line 89 def activated? @activated ||= begin loaded = Gem.loaded_specs[name] loaded && loaded.version == version end end |
#build_extensions ⇒ Object
:nodoc:
101 102 103 104 105 106 |
# File 'lib/rubygems/stub_specification.rb', line 101 def build_extensions # :nodoc: return if default_gem? return if extensions.empty? to_spec.build_extensions end |
#default_gem? ⇒ Boolean
97 98 99 |
# File 'lib/rubygems/stub_specification.rb', line 97 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?
213 214 215 |
# File 'lib/rubygems/stub_specification.rb', line 213 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 200 |
# File 'lib/rubygems/stub_specification.rb', line 189 def to_spec @spec ||= if @data then Gem.loaded_specs.values.find { |spec| spec.name == name and spec.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?
206 207 208 |
# File 'lib/rubygems/stub_specification.rb', line 206 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 |