Class: Gem::Specification

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

Direct Known Subclasses

Bundler::EndpointSpecification

Defined Under Namespace

Modules: AllowSettingSource, FixPathSourceMissingExtensions

Constant Summary collapse

@@array_attributes =

rubocop:disable Style/ClassVars

correct_array_attributes

Instance Attribute Summary collapse

Attributes included from AllowSettingSource

#source

Instance Method Summary collapse

Methods included from Bundler::MatchMetadata

#expanded_dependencies, #matches_current_metadata?, #matches_current_ruby?, #matches_current_rubygems?, #metadata_dependency

Methods included from FixPathSourceMissingExtensions

#missing_extensions?

Instance Attribute Details

#relative_loaded_fromObject

Returns the value of attribute relative_loaded_from.



191
192
193
# File 'lib/bundler/rubygems_ext.rb', line 191

def relative_loaded_from
  @relative_loaded_from
end

#remoteObject

Returns the value of attribute remote.



191
192
193
# File 'lib/bundler/rubygems_ext.rb', line 191

def remote
  @remote
end

Instance Method Details

#extension_dirObject



227
228
229
230
231
232
233
234
235
236
# File 'lib/bundler/rubygems_ext.rb', line 227

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

#full_gem_pathObject



206
207
208
209
210
211
212
# File 'lib/bundler/rubygems_ext.rb', line 206

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

#gem_dirObject



241
242
243
# File 'lib/bundler/rubygems_ext.rb', line 241

def gem_dir
  full_gem_path
end

#git_versionObject



253
254
255
256
# File 'lib/bundler/rubygems_ext.rb', line 253

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

#groupsObject



249
250
251
# File 'lib/bundler/rubygems_ext.rb', line 249

def groups
  @groups ||= []
end

#insecurely_materialized?Boolean

Returns:

  • (Boolean)


245
246
247
# File 'lib/bundler/rubygems_ext.rb', line 245

def insecurely_materialized?
  false
end

#installation_missing?Boolean

Returns:

  • (Boolean)


272
273
274
# File 'lib/bundler/rubygems_ext.rb', line 272

def installation_missing?
  !default_gem? && !File.directory?(full_gem_path)
end

#load_pathsObject



222
223
224
# File 'lib/bundler/rubygems_ext.rb', line 222

def load_paths
  full_require_paths
end

#loaded_fromObject



214
215
216
217
218
219
220
# File 'lib/bundler/rubygems_ext.rb', line 214

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

#lock_nameObject



276
277
278
# File 'lib/bundler/rubygems_ext.rb', line 276

def lock_name
  @lock_name ||= name_tuple.lock_name
end

#nondevelopment_dependenciesObject



268
269
270
# File 'lib/bundler/rubygems_ext.rb', line 268

def nondevelopment_dependencies
  dependencies - development_dependencies
end

#rg_extension_dirObject



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

alias_method :rg_extension_dir, :extension_dir

#rg_full_gem_pathObject



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

alias_method :rg_full_gem_path, :full_gem_path

#rg_loaded_fromObject



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

alias_method :rg_loaded_from,   :loaded_from

#to_gemfile(path = nil) ⇒ Object



258
259
260
261
262
263
264
265
266
# File 'lib/bundler/rubygems_ext.rb', line 258

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_resolutionObject



281
282
283
# File 'lib/bundler/rubygems_ext.rb', line 281

def validate_for_resolution
  SpecificationPolicy.new(self).validate_for_resolution
end