class Gem::StubSpecification
def self.default_gemspec_stub(filename, base_dir, gems_dir)
def self.default_gemspec_stub(filename, base_dir, gems_dir) new filename, base_dir, gems_dir, true end
def self.gemspec_stub(filename, base_dir, gems_dir)
def self.gemspec_stub(filename, base_dir, gems_dir) new filename, base_dir, gems_dir, false end
def <=>(other) # :nodoc:
def <=>(other) # :nodoc: sort_obj <=> other.sort_obj end
def ==(other) # :nodoc:
def ==(other) # :nodoc: self.class === other && name == other.name && version == other.version && platform == other.platform end
def activated?
def activated? @activated ||= !loaded_spec.nil? end
def build_extensions # :nodoc:
def build_extensions # :nodoc: return if default_gem? return if extensions.empty? to_spec.build_extensions end
def data
def data unless @data begin saved_lineno = $. Gem.open_file loaded_from, OPEN_MODE do |file| file.readline # discard encoding line stubline = file.readline if stubline.start_with?(PREFIX) extline = file.readline extensions = if extline.delete_prefix!(PREFIX) extline.chomp! extline.split "\0" else StubLine::NO_EXTENSIONS end stubline.chomp! # readline(chomp: true) allocates 3x as much as .readline.chomp! @data = StubLine.new stubline, extensions end rescue EOFError end ensure $. = saved_lineno end end @data ||= to_spec end
def default_gem?
def default_gem? @default_gem end
def extensions
def extensions data.extensions end
def full_name
def full_name data.full_name end
def hash # :nodoc:
def hash # :nodoc: name.hash ^ version.hash ^ platform.hash end
def initialize(filename, base_dir, gems_dir, default_gem)
def initialize(filename, base_dir, gems_dir, default_gem) super() self.loaded_from = filename @data = nil @name = nil @spec = nil @base_dir = base_dir @gems_dir = gems_dir @default_gem = default_gem end
def loaded_spec
def loaded_spec spec = Gem.loaded_specs[name] return unless spec && spec.version == version && spec.default_gem? == default_gem? spec end
def missing_extensions?
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
def name
def name data.name end
def platform
def platform data.platform end
def raw_require_paths # :nodoc:
def raw_require_paths # :nodoc: data.require_paths end
def sort_obj # :nodoc:
def sort_obj # :nodoc: [name, version, Gem::Platform.sort_priority(platform)] end
def spec
def spec @spec ||= loaded_spec if @data @spec ||= Gem::Specification.load(loaded_from) end
def stubbed?
def stubbed? data.is_a? StubLine end
def valid?
def valid? data end
def version
def version data.version end