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, #plugins, #require_paths, #source_paths, #this, #to_fullpath
Methods included from Deprecate
#deprecate, next_rubygems_major_version, rubygems_deprecate, rubygems_deprecate_command, skip, skip=, skip_during
Constructor Details
#initialize(filename, base_dir, gems_dir, default_gem) ⇒ StubSpecification
Returns a new instance of StubSpecification.
      69 70 71 72 73 74 75 76 77 78 79 80  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 69 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.
      67 68 69  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 67 def base_dir @base_dir end  | 
  
#gems_dir ⇒ Object (readonly)
Returns the value of attribute gems_dir.
      67 68 69  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 67 def gems_dir @gems_dir end  | 
  
Class Method Details
.default_gemspec_stub(filename, base_dir, gems_dir) ⇒ Object
      59 60 61  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 59 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
      63 64 65  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 63 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
      85 86 87 88 89 90 91  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 85 def activated? @activated ||= begin loaded = Gem.loaded_specs[name] loaded && loaded.version == version end end  | 
  
#build_extensions ⇒ Object
:nodoc:
      97 98 99 100 101 102  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 97 def build_extensions # :nodoc: return if default_gem? return if extensions.empty? to_spec.build_extensions end  | 
  
#default_gem? ⇒ Boolean
      93 94 95  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 93 def default_gem? @default_gem end  | 
  
#extensions ⇒ Object
Extensions for this gem
      168 169 170  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 168 def extensions data.extensions end  | 
  
#full_name ⇒ Object
      179 180 181  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 179 def full_name data.full_name end  | 
  
#missing_extensions? ⇒ Boolean
      143 144 145 146 147 148 149  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 143 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
      154 155 156  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 154 def name data.name end  | 
  
#platform ⇒ Object
Platform of the gem
      161 162 163  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 161 def platform data.platform end  | 
  
#raw_require_paths ⇒ Object
:nodoc:
      139 140 141  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 139 def raw_require_paths # :nodoc: data.require_paths end  | 
  
#stubbed? ⇒ Boolean
Is there a stub line present for this StubSpecification?
      206 207 208  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 206 def stubbed? data.is_a? StubLine end  | 
  
#to_spec ⇒ Object
The full Gem::Specification for this gem, loaded from evalling its gemspec
      186 187 188 189 190 191 192 193  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 186 def to_spec @spec ||= if @data loaded = Gem.loaded_specs[name] loaded if loaded && loaded.version == version end @spec ||= Gem::Specification.load(loaded_from) end  | 
  
#valid? ⇒ Boolean
Is this StubSpecification valid? i.e. have we found a stub line, OR does the filename contain a valid gemspec?
      199 200 201  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 199 def valid? data end  | 
  
#version ⇒ Object
Version of the gem
      175 176 177  | 
    
      # File 'lib/rubygems/stub_specification.rb', line 175 def version data.version end  |