Class/Module Index [+]

Quicksearch

Bundler

Some versions of the Bundler 1.1 RC series introduced corrupted lockfiles. There were two major problems:

As a result, Bundler 1.1 contains code that fixes the earlier corruption. We will remove this fix-up code in Bundler 1.2.

Constants

FREEBSD
NULL
ORIGINAL_ENV
VERSION

We're doing this because we might write tests that deal with other versions of bundler and we are unsure how to handle this better.

WINDOWS
YamlSyntaxError

Attributes

bundle_path[W]
rubygems[R]
ui[W]

Public Class Methods

app_cache() click to toggle source
# File lib/bundler.rb, line 182
def app_cache
  root.join("vendor/cache")
end
app_config_path() click to toggle source
# File lib/bundler.rb, line 176
def app_config_path
  ENV['BUNDLE_APP_CONFIG'] ?
    Pathname.new(ENV['BUNDLE_APP_CONFIG']).expand_path(root) :
    root.join('.bundle')
end
bin_path() click to toggle source

Returns absolute location of where binstubs are installed to.

# File lib/bundler.rb, line 99
def bin_path
  @bin_path ||= begin
    path = settings[:bin] || "bin"
    path = Pathname.new(path).expand_path(root)
    FileUtils.mkdir_p(path)
    Pathname.new(path).expand_path
  end
end
bundle_path() click to toggle source

Returns absolute path of where gems are installed on the filesystem.

# File lib/bundler.rb, line 94
def bundle_path
  @bundle_path ||= Pathname.new(settings.path).expand_path(root)
end
cache() click to toggle source
# File lib/bundler.rb, line 168
def cache
  bundle_path.join("cache/bundler")
end
clean_exec(*args) click to toggle source
# File lib/bundler.rb, line 217
def clean_exec(*args)
  with_clean_env { Kernel.exec(*args) }
end
clean_system(*args) click to toggle source
# File lib/bundler.rb, line 213
def clean_system(*args)
  with_clean_env { Kernel.system(*args) }
end
clear_gemspec_cache() click to toggle source
# File lib/bundler.rb, line 306
def clear_gemspec_cache
  @gemspec_cache = {}
end
configure() click to toggle source
# File lib/bundler.rb, line 85
def configure
  @configured ||= configure_gem_home_and_path
end
default_gemfile() click to toggle source
# File lib/bundler.rb, line 221
def default_gemfile
  SharedHelpers.default_gemfile
end
default_lockfile() click to toggle source
# File lib/bundler.rb, line 225
def default_lockfile
  SharedHelpers.default_lockfile
end
definition(unlock = nil) click to toggle source
# File lib/bundler.rb, line 139
def definition(unlock = nil)
  @definition = nil if unlock
  @definition ||= begin
    configure
    upgrade_lockfile
    Definition.build(default_gemfile, default_lockfile, unlock)
  end
end
environment() click to toggle source
# File lib/bundler.rb, line 135
def environment
  Bundler::Environment.new(root, definition)
end
home() click to toggle source
# File lib/bundler.rb, line 156
def home
  bundle_path.join("bundler")
end
install_path() click to toggle source
# File lib/bundler.rb, line 160
def install_path
  home.join("gems")
end
load() click to toggle source
# File lib/bundler.rb, line 131
def load
  @load ||= Runtime.new(root, definition)
end
load_gemspec(file) click to toggle source
# File lib/bundler.rb, line 279
def load_gemspec(file)
  @gemspec_cache ||= {}
  key = File.expand_path(file)
  spec = ( @gemspec_cache[key] ||= load_gemspec_uncached(file) )
  # Protect against caching side-effected gemspecs by returning a
  # new instance each time.
  spec.dup if spec
end
load_gemspec_uncached(file) click to toggle source
# File lib/bundler.rb, line 288
def load_gemspec_uncached(file)
  path = Pathname.new(file)
  # Eval the gemspec from its parent directory
  Dir.chdir(path.dirname.to_s) do
    contents = File.read(path.basename.to_s)

    if contents =~ /\A---/ # try YAML
      begin
        Gem::Specification.from_yaml(contents)
      rescue ArgumentError, YamlSyntaxError, Gem::EndOfYAMLException, Gem::Exception
        eval_gemspec(path, contents)
      end
    else
      eval_gemspec(path, contents)
    end
  end
end
mkdir_p(path) click to toggle source
# File lib/bundler.rb, line 252
def mkdir_p(path)
  if requires_sudo?
    sudo "mkdir -p '#{path}'" unless File.exist?(path)
  else
    FileUtils.mkdir_p(path)
  end
end
preserve_gem_path() click to toggle source
# File lib/bundler/gem_path_manipulation.rb, line 2
def self.preserve_gem_path
  original_gem_path = ENV["_ORIGINAL_GEM_PATH"]
  gem_path          = ENV["GEM_PATH"]
  ENV["_ORIGINAL_GEM_PATH"] = gem_path          if original_gem_path.nil? || original_gem_path == ""
  ENV["GEM_PATH"]           = original_gem_path if gem_path.nil? || gem_path == ""
end
read_file(file) click to toggle source
# File lib/bundler.rb, line 275
def read_file(file)
  File.open(file, "rb") { |f| f.read }
end
require(*groups) click to toggle source
# File lib/bundler.rb, line 127
def require(*groups)
  setup(*groups).require(*groups)
end
requires_sudo?() click to toggle source
# File lib/bundler.rb, line 238
def requires_sudo?
  return @requires_sudo if defined?(@checked_for_sudo)

  path = bundle_path
  path = path.parent until path.exist?
  sudo_present = which "sudo"
  bin_dir = Pathname.new(Bundler.system_bindir)
  bin_dir = bin_dir.parent until bin_dir.exist?

  @checked_for_sudo = true
  sudo_gems = !File.writable?(path) || !File.writable?(bin_dir)
  @requires_sudo = settings.allow_sudo? && sudo_gems && sudo_present
end
root() click to toggle source
# File lib/bundler.rb, line 172
def root
  default_gemfile.dirname.expand_path
end
ruby_scope() click to toggle source
# File lib/bundler.rb, line 148
def ruby_scope
  "#{Bundler.rubygems.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
end
settings() click to toggle source
# File lib/bundler.rb, line 190
def settings
  @settings ||= Settings.new(app_config_path)
end
setup(*groups) click to toggle source
# File lib/bundler.rb, line 108
def setup(*groups)
  # Just return if all groups are already loaded
  return @setup if defined?(@setup)

  definition.validate_ruby!

  if groups.empty?
    # Load all groups, but only once
    @setup = load.setup
  else
    @completed_groups ||= []
    # Figure out which groups haven't been loaded yet
    unloaded = groups - @completed_groups
    # Record groups that are now loaded
    @completed_groups = groups
    unloaded.any? ? load.setup(*groups) : load
  end
end
specs_path() click to toggle source
# File lib/bundler.rb, line 164
def specs_path
  bundle_path.join("specifications")
end
sudo(str) click to toggle source
# File lib/bundler.rb, line 271
def sudo(str)
  `sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
end
system_bindir() click to toggle source
# File lib/bundler.rb, line 229
def system_bindir
  # Gem.bindir doesn't always return the location that Rubygems will install
  # system binaries. If you put '-n foo' in your .gemrc, Rubygems will
  # install binstubs there instead. Unfortunately, Rubygems doesn't expose
  # that directory at all, so rather than parse .gemrc ourselves, we allow
  # the directory to be set as well, via `bundle config bindir foo`.
  Bundler.settings[:system_bindir] || Bundler.rubygems.gem_bindir
end
tmp() click to toggle source
# File lib/bundler.rb, line 186
def tmp
  user_bundle_path.join("tmp", Process.pid.to_s)
end
ui() click to toggle source
# File lib/bundler.rb, line 89
def ui
  @ui ||= UI.new
end
user_bundle_path() click to toggle source
# File lib/bundler.rb, line 152
def user_bundle_path
  Pathname.new(Bundler.rubygems.user_home).join(".bundler")
end
which(executable) click to toggle source
# File lib/bundler.rb, line 260
def which(executable)
  if File.executable?(executable)
    executable
  elsif ENV['PATH']
    path = ENV['PATH'].split(File::PATH_SEPARATOR).find do |p|
      File.executable?(File.join(p, executable))
    end
    path && File.expand_path(executable, path)
  end
end
with_clean_env() click to toggle source
# File lib/bundler.rb, line 202
def with_clean_env
  with_original_env do
    ENV.delete_if { |k,_| k[0,7] == 'BUNDLE_' }
    if ENV.has_key? 'RUBYOPT'
      ENV['RUBYOPT'] = ENV['RUBYOPT'].sub '-rbundler/setup', ''
      ENV['RUBYOPT'] = ENV['RUBYOPT'].sub "-I#{File.expand_path('..', __FILE__)}", ''
    end
    yield
  end
end
with_friendly_errors() click to toggle source
# File lib/bundler/friendly_errors.rb, line 2
def self.with_friendly_errors
  begin
    yield
  rescue Bundler::BundlerError => e
    Bundler.ui.error e.message
    Bundler.ui.debug e.backtrace.join("\n")
    exit e.status_code
  rescue Interrupt => e
    Bundler.ui.error "\nQuitting..."
    Bundler.ui.debug e.backtrace.join("\n")
    exit 1
  rescue SystemExit => e
    exit e.status
  rescue LoadError => e
    case e.message
    when /cannot load such file -- openssl/, /openssl.so/, /libcrypto.so/
      Bundler.ui.error "\nCould not load OpenSSL."
      Bundler.ui.warn "You must recompile Ruby with OpenSSL support or change the sources in your"            "\nGemfile from 'https' to 'http'. Instructions for compiling with OpenSSL"            "\nusing RVM are available at rvm.io/packages/openssl."
      Bundler.ui.debug "#{e.class}: #{e.message}"
      Bundler.ui.debug e.backtrace.join("\n")
      exit 1
    else
      raise e
    end
  rescue Exception => e
    Bundler.ui.error(
      "Unfortunately, a fatal error has occurred. Please see the Bundler \n"          "troubleshooting documentation at http://bit.ly/bundler-issues. Thanks! \n")
    raise e
  end
end
with_original_env() click to toggle source
# File lib/bundler.rb, line 194
def with_original_env
  bundled_env = ENV.to_hash
  ENV.replace(ORIGINAL_ENV)
  yield
ensure
  ENV.replace(bundled_env.to_hash)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.