module Bundler
def bundle_path
def bundle_path @bundle_path ||= begin path = settings[:path] || "#{Gem.user_home}/.bundle" Pathname.new(path).expand_path(root) end end
def cache
def cache home.join("cache") end
def configure
def configure @configured ||= begin configure_gem_home_and_path true end end
def configure_gem_home_and_path
def configure_gem_home_and_path if path = settings[:path] ENV['GEM_HOME'] = File.expand_path(path, root) ENV['GEM_PATH'] = '' else gem_home, gem_path = Gem.dir, Gem.path ENV["GEM_PATH"] = [gem_home, gem_path].flatten.compact.join(File::PATH_SEPARATOR) ENV["GEM_HOME"] = bundle_path.to_s end Gem.clear_paths end
def default_gemfile
def default_gemfile current = Pathname.new(Dir.pwd) until current.root? filename = current.join("Gemfile") return filename if filename.exist? current = current.parent end raise GemfileNotFound, "The default Gemfile was not found" end
def definition(gemfile = default_gemfile)
def definition(gemfile = default_gemfile) configure root = Pathname.new(gemfile).dirname lockfile = root.join("Gemfile.lock") if lockfile.exist? Definition.from_lock(lockfile) else Definition.from_gemfile(gemfile) end end
def home
def home Pathname.new(bundle_path).join("bundler") end
def install_path
def install_path home.join("gems") end
def load(gemfile = default_gemfile)
def load(gemfile = default_gemfile) root = Pathname.new(gemfile).dirname Runtime.new root, definition(gemfile) end
def require(*groups)
def require(*groups) gemfile = default_gemfile load(gemfile).require(*groups) end
def root
def root default_gemfile.dirname end
def settings
def settings @settings ||= Settings.new(root) end
def setup(*groups)
def setup(*groups) gemfile = default_gemfile load(gemfile).setup(*groups) end
def ui
def ui @ui ||= UI.new end