class Bundler::Runtime

def cache(custom_path = nil, local = false)

def cache(custom_path = nil, local = false)
  cache_path = Bundler.app_cache(custom_path)
  SharedHelpers.filesystem_access(cache_path) do |p|
    FileUtils.mkdir_p(p)
  end unless File.exist?(cache_path)
  Bundler.ui.info "Updating files in #{Bundler.settings.app_cache_path}"
  specs_to_cache = if Bundler.settings[:cache_all_platforms]
    @definition.resolve.materialized_for_all_platforms
  else
    begin
      specs
    rescue GemNotFound
      if local
        Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory."
      end
      raise
    end
  end
  specs_to_cache.each do |spec|
    next if spec.name == "bundler"
    next if spec.source.is_a?(Source::Gemspec)
    spec.source.cache(spec, custom_path) if spec.source.respond_to?(:cache)
  end
  Dir[cache_path.join("*/.git")].each do |git_dir|
    FileUtils.rm_rf(git_dir)
    FileUtils.touch(File.expand_path("../.bundlecache", git_dir))
  end
  prune_cache(cache_path) unless Bundler.settings[:no_prune]
end