Class: Bundler::CLI::Exec

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler/cli/exec.rb

Constant Summary collapse

TRAPPED_SIGNALS =
%w[INT].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options, args) ⇒ Exec

Returns a new instance of Exec.



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/bundler/cli/exec.rb', line 11

def initialize(options, args)
  @options = options
  @cmd = args.shift
  @args = args

  if !Bundler.current_ruby.jruby?
    @args << { :close_others => !options.keep_file_descriptors? }
  elsif options.keep_file_descriptors?
    Bundler.ui.warn "Ruby version #{RUBY_VERSION} defaults to keeping non-standard file descriptors on Kernel#exec."
  end
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



7
8
9
# File 'lib/bundler/cli/exec.rb', line 7

def args
  @args
end

#cmdObject (readonly)

Returns the value of attribute cmd.



7
8
9
# File 'lib/bundler/cli/exec.rb', line 7

def cmd
  @cmd
end

#optionsObject (readonly)

Returns the value of attribute options.



7
8
9
# File 'lib/bundler/cli/exec.rb', line 7

def options
  @options
end

Instance Method Details

#runObject



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bundler/cli/exec.rb', line 23

def run
  validate_cmd!
  SharedHelpers.set_bundle_environment
  if bin_path = Bundler.which(cmd)
    if !Bundler.settings[:disable_exec_load] && ruby_shebang?(bin_path)
      return kernel_load(bin_path, *args)
    end
    kernel_exec(bin_path, *args)
  else
    # exec using the given command
    kernel_exec(cmd, *args)
  end
end