class Bundler::Definition

def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil)

Parameters:
  • ruby_version (Bundler::RubyVersion, nil) -- Requested Ruby Version
  • unlock (Hash, Boolean, nil) -- Gems that have been requested
  • sources (Array(Bundler::Source::Rubygems)) --
  • dependencies (Array(Bundler::Dependency)) -- array of dependencies from Gemfile
  • lockfile (Pathname) -- Path to Gemfile.lock
def initialize(lockfile, dependencies, sources, unlock, ruby_version = nil)
  @unlocking = unlock == true || !unlock.empty?
  @dependencies, @sources, @unlock = dependencies, sources, unlock
  @remote            = false
  @specs             = nil
  @lockfile_contents = ""
  @ruby_version      = ruby_version
  if lockfile && File.exist?(lockfile)
    @lockfile_contents = Bundler.read_file(lockfile)
    locked = LockfileParser.new(@lockfile_contents)
    @platforms      = locked.platforms
    if unlock != true
      @locked_deps    = locked.dependencies
      @locked_specs   = SpecSet.new(locked.specs)
      @locked_sources = locked.sources
    else
      @unlock         = {}
      @locked_deps    = []
      @locked_specs   = SpecSet.new([])
      @locked_sources = []
    end
  else
    @unlock         = {}
    @platforms      = []
    @locked_deps    = []
    @locked_specs   = SpecSet.new([])
    @locked_sources = []
  end
  @unlock[:gems] ||= []
  @unlock[:sources] ||= []
  current_platform = Bundler.rubygems.platforms.map { |p| generic(p) }.compact.last
  @new_platform = !@platforms.include?(current_platform)
  @platforms |= [current_platform]
  @path_changes = converge_paths
  eager_unlock = expand_dependencies(@unlock[:gems])
  @unlock[:gems] = @locked_specs.for(eager_unlock).map { |s| s.name }
  @source_changes = converge_sources
  @dependency_changes = converge_dependencies
  @local_changes = converge_locals
  fixup_dependency_types!
end