Class: Bundler::Source::Path::Installer

Inherits:
GemInstaller
  • Object
show all
Defined in:
lib/bundler/source/path/installer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from GemInstaller

#check_executable_overwrite

Constructor Details

#initialize(spec, options = {}) ⇒ Installer

Returns a new instance of Installer



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/bundler/source/path/installer.rb', line 8

def initialize(spec, options = {})
  @spec              = spec
  @gem_dir           = Bundler.rubygems.path(spec.full_gem_path)
  @wrappers          = true
  @env_shebang       = true
  @format_executable = options[:format_executable] || false
  @build_args        = options[:build_args] || Bundler.rubygems.build_args
  @gem_bin_dir       = "#{Bundler.rubygems.gem_dir}/bin"

  if Bundler.requires_sudo?
    @tmp_dir = Bundler.tmp(spec.full_name).to_s
    @bin_dir = "#{@tmp_dir}/bin"
  else
    @bin_dir = @gem_bin_dir
  end
end

Instance Attribute Details

#specObject (readonly)

Returns the value of attribute spec



6
7
8
# File 'lib/bundler/source/path/installer.rb', line 6

def spec
  @spec
end

Instance Method Details

#generate_binObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/bundler/source/path/installer.rb', line 25

def generate_bin
  return if spec.executables.nil? || spec.executables.empty?

  super

  if Bundler.requires_sudo?
    Bundler.mkdir_p @gem_bin_dir
    spec.executables.each do |exe|
      Bundler.sudo "cp -R #{@bin_dir}/#{exe} #{@gem_bin_dir}"
    end
  end
ensure
  Bundler.rm_rf(@tmp_dir) if Bundler.requires_sudo?
end