class Gem::Specification
On universal Rubies, resolve the “universal” arch to the real CPU arch, without changing the extension directory.
Constants
- LATEST_RUBY_WITHOUT_PATCH_VERSIONS
- ORIGINAL_LOCAL_PLATFORM
Attributes
location[RW]
relative_loaded_from[RW]
remote[RW]
source[W]
Public Instance Methods
deleted_gem?()
click to toggle source
# File bundler/rubygems_ext.rb, line 153 def deleted_gem? !default_gem? && !File.directory?(full_gem_path) end
extension_dir()
click to toggle source
# File bundler/rubygems_ext.rb, line 68 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
extensions_dir()
click to toggle source
# File bundler/rubygems_ext.rb, line 353 def extensions_dir Gem.default_ext_dir_for(base_dir) || File.join(base_dir, "extensions", ORIGINAL_LOCAL_PLATFORM, Gem.extension_api_version) end
full_gem_path()
click to toggle source
# File bundler/rubygems_ext.rb, line 47 def full_gem_path if source.respond_to?(:root) 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 98 def gem_dir full_gem_path end
git_version()
click to toggle source
# File bundler/rubygems_ext.rb, line 123 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 119 def groups @groups ||= [] end
load_paths()
click to toggle source
# File bundler/rubygems_ext.rb, line 63 def load_paths full_require_paths end
loaded_from()
click to toggle source
# File bundler/rubygems_ext.rb, line 55 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
missing_extensions?()
click to toggle source
# File bundler/rubygems_ext.rb, line 80 def missing_extensions? # When we use this methods with local gemspec, we don't handle # build status of extension correctly. So We need to find extension # files in require_paths. # TODO: Gem::Specification couldn't access extension name from extconf.rb # so we find them with heuristic way. We should improve it. if source.respond_to?(:root) return false if raw_require_paths.any? do |path| ext_dir = File.join(full_gem_path, path) File.exist?(File.join(ext_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")) || !Dir.glob(File.join(ext_dir, name, "*.#{RbConfig::CONFIG["DLEXT"]}")).empty? end end rg_missing_extensions? end
Also aliased as: rg_missing_extensions?
nondevelopment_dependencies()
click to toggle source
# File bundler/rubygems_ext.rb, line 149 def nondevelopment_dependencies dependencies - development_dependencies end
required_ruby_version=(req)
click to toggle source
# File bundler/rubygems_ext.rb, line 106 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
source()
click to toggle source
# File bundler/rubygems_ext.rb, line 40 def source (defined?(@source) && @source) || Gem::Source::Installed.new end
to_gemfile(path = nil)
click to toggle source
# File bundler/rubygems_ext.rb, line 128 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 159 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