class Gem::Specification - bundler: Ruby Standard Library Documentation

# class Gem::Specification

### Constants

LATEST_RUBY_WITHOUT_PATCH_VERSIONS

### Attributes

relative_loaded_from[RW]
remote[RW]

### Public Instance Methods

deleted_gem?() click to toggle source

    # File bundler/rubygems_ext.rb, line 180
    def deleted_gem?
      !default_gem? && !File.directory?(full_gem_path)
    end

extension_dir() click to toggle source

    # File bundler/rubygems_ext.rb, line 118
    def extension_dir
      # following instance variable is already used in original method
      # and that is the reason to prefix it with bundler_ and add rubocop exception
      @bundler_extension_dir ||= if source.respond_to?(:extension_dir_name) # rubocop:disable Naming/MemoizedInstanceVariableName
        unique_extension_dir = [source.extension_dir_name, File.basename(full_gem_path)].uniq.join("-")
        File.expand_path(File.join(extensions_dir, unique_extension_dir))
      else
        rg_extension_dir
      end
    end

Also aliased as: rg_extension_dir
flatten_require_paths() click to toggle source

    # File bundler/rubygems_ext.rb, line 191
    def flatten_require_paths
      return unless raw_require_paths.first.is_a?(Array)

      warn "#{name} #{version} includes a gemspec with `require_paths` set to an array of arrays. Newer versions of this gem might've already fixed this"
      raw_require_paths.flatten!
    end

full_gem_path() click to toggle source

    # File bundler/rubygems_ext.rb, line 97
    def full_gem_path
      if source.respond_to?(:root)
        File.expand_path(File.dirname(loaded_from), source.root)
      else
        rg_full_gem_path
      end
    end

Also aliased as: rg_full_gem_path
gem_dir() click to toggle source

    # File bundler/rubygems_ext.rb, line 132
    def gem_dir
      full_gem_path
    end

git_version() click to toggle source

    # File bundler/rubygems_ext.rb, line 161
    def git_version
      return unless loaded_from && source.is_a?(Bundler::Source::Git)
      " #{source.revision[0..6]}"
    end

groups() click to toggle source

    # File bundler/rubygems_ext.rb, line 157
    def groups
      @groups ||= []
    end

insecurely_materialized?() click to toggle source

    # File bundler/rubygems_ext.rb, line 153
    def insecurely_materialized?
      false
    end

load_paths() click to toggle source

    # File bundler/rubygems_ext.rb, line 113
    def load_paths
      full_require_paths
    end

loaded_from() click to toggle source

    # File bundler/rubygems_ext.rb, line 105
    def loaded_from
      if relative_loaded_from
        source.path.join(relative_loaded_from).to_s
      else
        rg_loaded_from
      end
    end

Also aliased as: rg_loaded_from
nondevelopment_dependencies() click to toggle source

    # File bundler/rubygems_ext.rb, line 176
    def nondevelopment_dependencies
      dependencies - development_dependencies
    end

required_ruby_version=(req) click to toggle source

    # File bundler/rubygems_ext.rb, line 140
    def required_ruby_version=(req)
      self.rg_required_ruby_version = req

      @required_ruby_version.requirements.map! do |op, v|
        if v >= LATEST_RUBY_WITHOUT_PATCH_VERSIONS && v.release.segments.size == 4
          [op == "~>" ? "=" : op, Gem::Version.new(v.segments.tap {|s| s.delete_at(3) }.join("."))]
        else
          [op, v]
        end
      end
    end

rg_extension_dir()
Alias for: extension_dir
rg_full_gem_path()
Alias for: full_gem_path
rg_loaded_from()
Alias for: loaded_from
to_gemfile(path = nil) click to toggle source

    # File bundler/rubygems_ext.rb, line 166
    def to_gemfile(path = nil)
      gemfile = String.new("source 'https://rubygems.org'\n")
      gemfile << dependencies_to_gemfile(nondevelopment_dependencies)
      unless development_dependencies.empty?
        gemfile << "\n"
        gemfile << dependencies_to_gemfile(development_dependencies, :development)
      end
      gemfile
    end

validate_for_resolution() click to toggle source

    # File bundler/rubygems_ext.rb, line 185
    def validate_for_resolution
      SpecificationPolicy.new(self).validate_for_resolution
    end

### Private Instance Methods

dependencies_to_gemfile(dependencies, group = nil) click to toggle source

    # File bundler/rubygems_ext.rb, line 213
    def dependencies_to_gemfile(dependencies, group = nil)
      gemfile = String.new
      if dependencies.any?
        gemfile << "group :#{group} do\n" if group
        dependencies.each do |dependency|
          gemfile << "  " if group
          gemfile << %(gem "#{dependency.name}")
          req = dependency.requirements_list.first
          gemfile << %(, "#{req}") if req
          gemfile << "\n"
        end
        gemfile << "end\n" if group
      end
      gemfile
    end