Module: Bundler

### Home Classes Methods

### In Files

- lib/bundler.rb
- lib/bundler/cli.rb
- lib/bundler/definition.rb
- lib/bundler/dep_proxy.rb
- lib/bundler/dependency.rb
- lib/bundler/deployment.rb
- lib/bundler/deprecate.rb
- lib/bundler/dsl.rb
- lib/bundler/endpoint_specification.rb
- lib/bundler/env.rb
- lib/bundler/environment.rb
- lib/bundler/fetcher.rb
- lib/bundler/friendly_errors.rb
- lib/bundler/gem_helper.rb
- lib/bundler/gem_helpers.rb
- lib/bundler/gem_installer.rb
- lib/bundler/gem_path_manipulation.rb
- lib/bundler/graph.rb
- lib/bundler/index.rb
- lib/bundler/injector.rb
- lib/bundler/installer.rb
- lib/bundler/lazy_specification.rb
- lib/bundler/lockfile_parser.rb
- lib/bundler/match_platform.rb
- lib/bundler/psyched_yaml.rb
- lib/bundler/remote_specification.rb
- lib/bundler/resolver.rb
- lib/bundler/ruby_dsl.rb
- lib/bundler/ruby_version.rb
- lib/bundler/rubygems_integration.rb
- lib/bundler/runtime.rb
- lib/bundler/settings.rb
- lib/bundler/shared_helpers.rb
- lib/bundler/similarity_detector.rb
- lib/bundler/source.rb
- lib/bundler/source/git.rb
- lib/bundler/source/git/git_proxy.rb
- lib/bundler/source/path.rb
- lib/bundler/source/path/installer.rb
- lib/bundler/source/rubygems.rb
- lib/bundler/spec_set.rb
- lib/bundler/ui.rb
- lib/bundler/version.rb

### Namespace

- MODULE Bundler::GemHelpers
- MODULE Bundler::MatchPlatform
- MODULE Bundler::RubyDsl
- MODULE Bundler::SharedHelpers
- MODULE Bundler::Source
- CLASS Bundler::BundlerError
- CLASS Bundler::CLI
- CLASS Bundler::Definition
- CLASS Bundler::DepProxy
- CLASS Bundler::Dependency
- CLASS Bundler::Deployment
- CLASS Bundler::Deprecate
- CLASS Bundler::DeprecatedError
- CLASS Bundler::Dsl
- CLASS Bundler::EndpointSpecification
- CLASS Bundler::Env
- CLASS Bundler::Environment
- CLASS Bundler::Fetcher
- CLASS Bundler::GemHelper
- CLASS Bundler::GemInstaller
- CLASS Bundler::GemNotFound
- CLASS Bundler::GemfileError
- CLASS Bundler::GemfileNotFound
- CLASS Bundler::GemspecError
- CLASS Bundler::GitError
- CLASS Bundler::Graph
- CLASS Bundler::HTTPError
- CLASS Bundler::Index
- CLASS Bundler::Injector
- CLASS Bundler::InstallError
- CLASS Bundler::InstallHookError
- CLASS Bundler::Installer
- CLASS Bundler::InvalidOption
- CLASS Bundler::InvalidSpecSet
- CLASS Bundler::LazySpecification
- CLASS Bundler::LockfileError
- CLASS Bundler::LockfileParser
- CLASS Bundler::MarshalError
- CLASS Bundler::PathError
- CLASS Bundler::ProductionError
- CLASS Bundler::RemoteSpecification
- CLASS Bundler::Resolver
- CLASS Bundler::RubyVersion
- CLASS Bundler::RubyVersionMismatch
- CLASS Bundler::RubygemsIntegration
- CLASS Bundler::Runtime
- CLASS Bundler::SecurityError
- CLASS Bundler::Settings
- CLASS Bundler::SimilarityDetector
- CLASS Bundler::SpecSet
- CLASS Bundler::SystemRubyVersion
- CLASS Bundler::UI
- CLASS Bundler::VersionConflict

### Methods

- ::app_cache
- ::app_config_path
- ::bin_path
- ::bundle_path
- ::cache
- ::clean_exec
- ::clean_system
- ::clear_gemspec_cache
- ::configure
- ::default_gemfile
- ::default_lockfile
- ::definition
- ::environment
- ::home
- ::install_path
- ::load
- ::load_gemspec
- ::load_gemspec_uncached
- ::load_marshal
- ::mkdir_p
- ::preserve_gem_path
- ::read_file
- ::require
- ::requires_sudo?
- ::root
- ::ruby_scope
- ::settings
- ::setup
- ::specs_path
- ::sudo
- ::system_bindir
- ::tmp
- ::ui
- ::user_bundle_path
- ::which
- ::with_clean_env
- ::with_friendly_errors
- ::with_original_env

### Files

- bundle
- bundle-config
- bundle-config.txt
- bundle-exec
- bundle-exec.txt
- bundle-install
- bundle-install.txt
- bundle-package
- bundle-package.txt
- bundle-platform
- bundle-platform.txt
- bundle-update
- bundle-update.txt
- bundle.txt
- gemfile.5.txt
- Executable
- Gemfile

### Class/Module Index

Quicksearch

- Bundler
- Bundler::BundlerError
- Bundler::CLI
- Bundler::Definition
- Bundler::DepProxy
- Bundler::Dependency
- Bundler::Deployment
- Bundler::Deprecate
- Bundler::DeprecatedError
- Bundler::Dsl
- Bundler::EndpointSpecification
- Bundler::Env
- Bundler::Environment
- Bundler::Fetcher
- Bundler::Fetcher::CertificateFailureError
- Bundler::Fetcher::FallbackError
- Bundler::Fetcher::SSLError
- Bundler::GemHelper
- Bundler::GemHelpers
- Bundler::GemInstaller
- Bundler::GemNotFound
- Bundler::GemfileError
- Bundler::GemfileNotFound
- Bundler::GemspecError
- Bundler::GitError
- Bundler::Graph
- Bundler::Graph::GraphVizClient
- Bundler::HTTPError
- Bundler::Index
- Bundler::Injector
- Bundler::InstallError
- Bundler::InstallHookError
- Bundler::Installer
- Bundler::InvalidOption
- Bundler::InvalidSpecSet
- Bundler::LazySpecification
- Bundler::LockfileError
- Bundler::LockfileParser
- Bundler::MarshalError
- Bundler::MatchPlatform
- Bundler::PathError
- Bundler::ProductionError
- Bundler::RemoteSpecification
- Bundler::Resolver
- Bundler::Resolver::SpecGroup
- Bundler::RubyDsl
- Bundler::RubyVersion
- Bundler::RubyVersionMismatch
- Bundler::RubygemsIntegration
- Bundler::RubygemsIntegration::AlmostModern
- Bundler::RubygemsIntegration::Ancient
- Bundler::RubygemsIntegration::Future
- Bundler::RubygemsIntegration::Gem
- Bundler::RubygemsIntegration::Gem::SourceIndex
- Bundler::RubygemsIntegration::Legacy
- Bundler::RubygemsIntegration::Modern
- Bundler::RubygemsIntegration::Transitional
- Bundler::Runtime
- Bundler::SecurityError
- Bundler::Settings
- Bundler::SharedHelpers
- Bundler::SimilarityDetector
- Bundler::Source
- Bundler::Source::Git
- Bundler::Source::Git::GitProxy
- Bundler::Source::Path
- Bundler::Source::Path::Installer
- Bundler::Source::Rubygems
- Bundler::SpecSet
- Bundler::SystemRubyVersion
- Bundler::UI
- Bundler::UI::RGProxy
- Bundler::UI::Shell
- Bundler::VersionConflict
- Gem
- Gem::Dependency
- Gem::Platform
- Gem::Requirement
- Gem::Specification
- Object

No matching classes.

# Bundler

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

- multiple copies of the same GIT section appeared in the lockfile

- when this happened, those sections got multiple copies of gems in those sections.

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

Deprecate
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 186
    def app_cache
      root.join("vendor/cache")
    end

app_config_path() click to toggle source

    # File lib/bundler.rb, line 180
    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 103
    def bin_path
      @bin_path ||= begin
        path = settings[:bin] || "bin"
        path = Pathname.new(path).expand_path(root).expand_path
        FileUtils.mkdir_p(path)
        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 98
    def bundle_path
      @bundle_path ||= Pathname.new(settings.path).expand_path(root)
    end

cache() click to toggle source

    # File lib/bundler.rb, line 172
    def cache
      bundle_path.join("cache/bundler")
    end

clean_exec(*args) click to toggle source

    # File lib/bundler.rb, line 226
    def clean_exec(*args)
      with_clean_env { Kernel.exec(*args) }
    end

clean_system(*args) click to toggle source

    # File lib/bundler.rb, line 222
    def clean_system(*args)
      with_clean_env { Kernel.system(*args) }
    end

clear_gemspec_cache() click to toggle source

    # File lib/bundler.rb, line 329
    def clear_gemspec_cache
      @gemspec_cache = {}
    end

configure() click to toggle source

    # File lib/bundler.rb, line 89
    def configure
      @configured ||= configure_gem_home_and_path
    end

default_gemfile() click to toggle source

    # File lib/bundler.rb, line 230
    def default_gemfile
      SharedHelpers.default_gemfile
    end

default_lockfile() click to toggle source

    # File lib/bundler.rb, line 234
    def default_lockfile
      SharedHelpers.default_lockfile
    end

definition(unlock = nil) click to toggle source

    # File lib/bundler.rb, line 143
    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 139
    def environment
      Bundler::Environment.new(root, definition)
    end

home() click to toggle source

    # File lib/bundler.rb, line 160
    def home
      bundle_path.join("bundler")
    end

install_path() click to toggle source

    # File lib/bundler.rb, line 164
    def install_path
      home.join("gems")
    end

load() click to toggle source

    # File lib/bundler.rb, line 135
    def load
      @load ||= Runtime.new(root, definition)
    end

load_gemspec(file) click to toggle source

    # File lib/bundler.rb, line 306
    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 315
    def load_gemspec_uncached(file)
      path = Pathname.new(file)
      # Eval the gemspec from its parent directory, because some gemspecs
      # depend on "./" relative paths.
      Dir.chdir(path.dirname.to_s) do
        contents = path.read
        if contents[0..2] == "---" # YAML header
          eval_yaml_gemspec(path, contents)
        else
          eval_gemspec(path, contents)
        end
      end
    end

load_marshal(data) click to toggle source

    # File lib/bundler.rb, line 300
    def load_marshal(data)
      Marshal.load(data)
    rescue => e
      raise MarshalError, "#{e.class}: #{e.message}"
    end

mkdir_p(path) click to toggle source

    # File lib/bundler.rb, line 273
    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 296
    def read_file(file)
      File.open(file, "rb") { |f| f.read }
    end

require(*groups) click to toggle source

    # File lib/bundler.rb, line 131
    def require(*groups)
      setup(*groups).require(*groups)
    end

requires_sudo?() click to toggle source

    # File lib/bundler.rb, line 247
    def requires_sudo?
      return @requires_sudo if defined?(@requires_sudo_ran)

      if settings.allow_sudo?
        sudo_present = which "sudo"
      end

      if sudo_present
        # the bundle path and subdirectories need to be writable for Rubygems
        # to be able to unpack and install gems without exploding
        path = bundle_path
        path = path.parent until path.exist?

        # bins are written to a different location on OS X
        bin_dir = Pathname.new(Bundler.system_bindir)
        bin_dir = bin_dir.parent until bin_dir.exist?

        # if any directory is not writable, we need sudo
        dirs = [path, bin_dir] | Dir[path.join('*')]
        sudo_needed = dirs.find{|d| !File.writable?(d) }
      end

      @requires_sudo_ran = true
      @requires_sudo = settings.allow_sudo? && sudo_present && sudo_needed
    end

root() click to toggle source

    # File lib/bundler.rb, line 176
    def root
      default_gemfile.dirname.expand_path
    end

ruby_scope() click to toggle source

    # File lib/bundler.rb, line 152
    def ruby_scope
      "#{Bundler.rubygems.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
    end

settings() click to toggle source

    # File lib/bundler.rb, line 194
    def settings
      @settings ||= begin
        Settings.new(app_config_path)
      rescue GemfileNotFound
        Settings.new
      end
    end

setup(*groups) click to toggle source

    # File lib/bundler.rb, line 112
    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 168
    def specs_path
      bundle_path.join("specifications")
    end

sudo(str) click to toggle source

    # File lib/bundler.rb, line 292
    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 238
    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 190
    def tmp
      user_bundle_path.join("tmp", Process.pid.to_s)
    end

ui() click to toggle source

    # File lib/bundler.rb, line 93
    def ui
      @ui ||= UI.new
    end

user_bundle_path() click to toggle source

    # File lib/bundler.rb, line 156
    def user_bundle_path
      Pathname.new(Bundler.rubygems.user_home).join(".bundler")
    end

which(executable) click to toggle source

    # File lib/bundler.rb, line 281
    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 210
    def with_clean_env
      with_original_env do
        ENV['MANPATH'] = ENV['BUNDLE_ORIG_MANPATH']
        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
      yield
    rescue Bundler::BundlerError => e
      Bundler.ui.error e.message, :wrap => true
      Bundler.ui.trace e
      exit e.status_code
    rescue LoadError => e
      raise e unless e.message =~ /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 \      Gemfile from 'https' to 'http'. Instructions for compiling with OpenSSL \      using RVM are available at rvm.io/packages/openssl., :wrap => true
      Bundler.ui.trace e
      exit 1
    rescue Interrupt => e
      Bundler.ui.error "\nQuitting..."
      Bundler.ui.trace e
      exit 1
    rescue SystemExit => e
      exit e.status
    rescue Exception => e
      Bundler.ui.error       Unfortunately, a fatal error has occurred. Please see the Bundler \      troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!, :wrap => true
      raise e
    end

with_original_env() click to toggle source

    # File lib/bundler.rb, line 202
    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.