Class: Gem::Specification

Inherits:
Object
  • Object
show all
Includes:
Bundler::MatchPlatform
Defined in:
lib/bundler/rubygems_ext.rb,
lib/bundler/rubygems_ext.rb

Direct Known Subclasses

Bundler::EndpointSpecification

Constant Summary

Constants included from Bundler::GemHelpers

Bundler::GemHelpers::GENERICS, Bundler::GemHelpers::GENERIC_CACHE

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Bundler::MatchPlatform

#match_platform, platforms_match?

Methods included from Bundler::GemHelpers

generic, generic_local_platform, platform_specificity_match, select_best_platform_match

Instance Attribute Details

#full_gem_pathObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/bundler/rubygems_ext.rb', line 44

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.untaint
  else
    rg_full_gem_path
  end
end

#locationObject

Returns the value of attribute location



27
28
29
# File 'lib/bundler/rubygems_ext.rb', line 27

def location
  @location
end

#relative_loaded_fromObject

Returns the value of attribute relative_loaded_from



27
28
29
# File 'lib/bundler/rubygems_ext.rb', line 27

def relative_loaded_from
  @relative_loaded_from
end

#remoteObject

Returns the value of attribute remote



27
28
29
# File 'lib/bundler/rubygems_ext.rb', line 27

def remote
  @remote
end

#sourceObject

Returns the value of attribute source



32
33
34
# File 'lib/bundler/rubygems_ext.rb', line 32

def source
  (defined?(@source) && @source) || Gem::Source::Installed.new
end

Instance Method Details

#extension_dirObject



78
79
80
81
82
83
84
# File 'lib/bundler/rubygems_ext.rb', line 78

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

#gem_dirObject



91
92
93
# File 'lib/bundler/rubygems_ext.rb', line 91

def gem_dir
  full_gem_path
end

#git_versionObject



99
100
101
102
# File 'lib/bundler/rubygems_ext.rb', line 99

def git_version
  return unless loaded_from && source.is_a?(Bundler::Source::Git)
  " #{source.revision[0..6]}"
end

#groupsObject



95
96
97
# File 'lib/bundler/rubygems_ext.rb', line 95

def groups
  @groups ||= []
end

#load_pathsObject



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/bundler/rubygems_ext.rb', line 64

def load_paths
  return full_require_paths if respond_to?(:full_require_paths)

  require_paths.map do |require_path|
    if require_path.include?(full_gem_path)
      require_path
    else
      File.join(full_gem_path, require_path)
    end
  end
end

#loaded_fromObject



56
57
58
59
60
61
62
# File 'lib/bundler/rubygems_ext.rb', line 56

def loaded_from
  if relative_loaded_from
    source.path.join(relative_loaded_from).to_s
  else
    rg_loaded_from
  end
end

#nondevelopment_dependenciesObject



114
115
116
# File 'lib/bundler/rubygems_ext.rb', line 114

def nondevelopment_dependencies
  dependencies - development_dependencies
end

#rg_extension_dirObject



77
# File 'lib/bundler/rubygems_ext.rb', line 77

alias_method :rg_extension_dir, :extension_dir

#rg_full_gem_pathObject



39
# File 'lib/bundler/rubygems_ext.rb', line 39

alias_method :rg_full_gem_path, :full_gem_path

#rg_loaded_fromObject



40
# File 'lib/bundler/rubygems_ext.rb', line 40

alias_method :rg_loaded_from,   :loaded_from

#to_gemfile(path = nil) ⇒ Object



104
105
106
107
108
109
110
111
112
# File 'lib/bundler/rubygems_ext.rb', line 104

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