module Bundler::Plugin

def gemfile_install(gemfile = nil, &inline)

Parameters:
  • block (Proc) -- that can be evaluated for (inline) Gemfile
  • gemfile (Pathname) -- path
def gemfile_install(gemfile = nil, &inline)
  builder = DSL.new
  if block_given?
    builder.instance_eval(&inline)
  else
    builder.eval_gemfile(gemfile)
  end
  definition = builder.to_definition(nil, true)
  return if definition.dependencies.empty?
  plugins = definition.dependencies.map(&:name).reject {|p| index.installed? p }
  installed_specs = Installer.new.install_definition(definition)
  save_plugins plugins, installed_specs, builder.inferred_plugins
rescue => e
  unless e.is_a?(GemfileError)
    Bundler.ui.error "Failed to install plugin: #{e.message}\n  #{e.backtrace[0]}"
  end
  raise
end