123456789_123456789_123456789_123456789_123456789_

Class: Bundler::Dependency

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: Gem::Dependency
Defined in: lib/bundler/dependency.rb

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

::Gem::Dependency - Inherited

::Gem::Dependency::FilterIgnoredSpecs - Included

ForcePlatform - Included

#default_force_ruby_platform

The :force_ruby_platform value used by dependencies for resolution, and by locked specifications for materialization is false by default, except for TruffleRuby.

Constructor Details

.new(name, version, options = {}, &blk) ⇒ Dependency

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 30

def initialize(name, version, options = {}, &blk)
  type = options["type"] || :runtime
  super(name, version, type)

  @autorequire    = nil
  @groups         = Array(options["group"] || :default).map(&:to_sym)
  @source         = options["source"]
  @path           = options["path"]
  @git            = options["git"]
  @github         = options["github"]
  @branch         = options["branch"]
  @ref            = options["ref"]
  @glob           = options["glob"]
  @platforms      = Array(options["platforms"])
  @env            = options["env"]
  @should_include = options.fetch("should_include", true)
  @gemfile        = options["gemfile"]
  @force_ruby_platform = options["force_ruby_platform"] if options.key?("force_ruby_platform")

  @autorequire = Array(options["require"] || []) if options.key?("require")
end

Instance Attribute Details

#autorequire (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 9

attr_reader :autorequire

#branch (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#current_env?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 76

def current_env?
  return true unless @env
  if @env.is_a?(Hash)
    @env.all? do |key, val|
      ENV[key.to_s] && (val.is_a?(String) ? ENV[key.to_s] == val : ENV[key.to_s] =~ val)
    end
  else
    ENV[@env.to_s]
  end
end

#current_platform?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 87

def current_platform?
  return true if @platforms.empty?
  @platforms.any? do |p|
    Bundler.current_ruby.send("#{p}?")
  end
end

#gemfile (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#gemspec_dev_dep?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 72

def gemspec_dev_dep?
  type == :development
end

#git (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#github (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#glob (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#groups (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#path (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#platforms (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#ref (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 10

attr_reader :groups, :platforms, :gemfile, :path, :git, :github, :branch, :ref, :glob

#should_include?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 68

def should_include?
  @should_include && current_env? && current_platform?
end

#specific?Boolean (readonly)

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 100

def specific?
  super
rescue NoMethodError
  requirement != ">= 0"
end

Instance Method Details

#expanded_platforms

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 64

def expanded_platforms
  @expanded_platforms ||= @platforms.filter_map {|pl| PLATFORM_MAP[pl] }.flatten.uniq
end

#gem_platforms(valid_platforms)

Returns the platforms this dependency is valid for, in the same order as passed in the valid_platforms parameter

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 57

def gem_platforms(valid_platforms)
  return RUBY_PLATFORM_ARRAY if force_ruby_platform
  return valid_platforms if @platforms.empty?

  valid_platforms.select {|p| expanded_platforms.include?(GemHelpers.generic(p)) }
end

#to_lock

[ GitHub ]

  
# File 'lib/bundler/dependency.rb', line 94

def to_lock
  out = super
  out << "!" if source
  out
end