Methods

Class/Module Index [+]

Quicksearch

Bundler::Installer

Public Class Methods

install(root, definition, options = {}) click to toggle source
# File lib/bundler/installer.rb, line 6
def self.install(root, definition, options = {})
  installer = new(root, definition)
  installer.run(options)
  installer
end

Public Instance Methods

run(options) click to toggle source
# File lib/bundler/installer.rb, line 12
def run(options)
  # Create the BUNDLE_PATH directory
  begin
    Bundler.bundle_path.mkpath unless Bundler.bundle_path.exist?
  rescue Errno::EEXIST
    raise PathError, "Could not install to path `#{Bundler.settings[:path]}` " +
      "because of an invalid symlink. Remove the symlink so the directory can be created."
  end

  if Bundler.settings[:frozen]
    @definition.ensure_equivalent_gemfile_and_lockfile(options[:deployment])
  end

  if dependencies.empty?
    Bundler.ui.warn "The Gemfile specifies no dependencies"
    return
  end

  if Bundler.default_lockfile.exist? && !options["update"]
    begin
      tmpdef = Definition.build(Bundler.default_gemfile, Bundler.default_lockfile, nil)
      local = true unless tmpdef.new_platform? || tmpdef.missing_specs.any?
    rescue BundlerError
    end
  end

  # Since we are installing, we can resolve the definition
  # using remote specs
  unless local
    options["local"] ?
      @definition.resolve_with_cache! :
      @definition.resolve_remotely!
  end

  # Must install gems in the order that the resolver provides
  # as dependencies might actually affect the installation of
  # the gem.
  specs.each do |spec|
    install_gem_from_spec(spec)
  end

  lock
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.