class Gem::Specification

Attributes

location[RW]
relative_loaded_from[RW]
remote[RW]
source[W]

Public Instance Methods

extension_dir() click to toggle source
# File bundler/rubygems_ext.rb, line 52
def extension_dir
  @bundler_extension_dir ||= if source.respond_to?(:extension_dir_name)
    File.expand_path(File.join(extensions_dir, source.extension_dir_name))
  else
    rg_extension_dir
  end
end
full_gem_path() click to toggle source
# File bundler/rubygems_ext.rb, line 26
def full_gem_path
  # this cannot check source.is_a?(Bundler::Plugin::API::Source)
  # because that _could_ trip the autoload, and if there are unresolved
  # gems at that time, this method could be called inside another require,
  # thus raising with that constant being undefined. Better to check a method
  if source.respond_to?(:path) || (source.respond_to?(:bundler_plugin_api_source?) && source.bundler_plugin_api_source?)
    Pathname.new(loaded_from).dirname.expand_path(source.root).to_s.tap{|x| x.untaint if RUBY_VERSION < "2.7" }
  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 62
def gem_dir
  full_gem_path
end
git_version() click to toggle source
# File bundler/rubygems_ext.rb, line 70
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 66
def groups
  @groups ||= []
end
load_paths() click to toggle source
# File bundler/rubygems_ext.rb, line 46
def load_paths
  full_require_paths
end
loaded_from() click to toggle source
# File bundler/rubygems_ext.rb, line 38
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 85
def nondevelopment_dependencies
  dependencies - development_dependencies
end
rg_full_gem_path()
Alias for: full_gem_path
rg_loaded_from()
Alias for: loaded_from
source() click to toggle source
# File bundler/rubygems_ext.rb, line 19
def source
  (defined?(@source) && @source) || Gem::Source::Installed.new
end
to_gemfile(path = nil) click to toggle source
# File bundler/rubygems_ext.rb, line 75
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

Private Instance Methods

dependencies_to_gemfile(dependencies, group = nil) click to toggle source
# File bundler/rubygems_ext.rb, line 91
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