Class: Bundler::CLI::Exec
- Inherits:
-
Object
- Object
- Bundler::CLI::Exec
- Defined in:
- lib/bundler/cli/exec.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#cmd ⇒ Object
readonly
Returns the value of attribute cmd.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
-
#initialize(options, args) ⇒ Exec
constructor
A new instance of Exec.
- #run ⇒ Object
Constructor Details
#initialize(options, args) ⇒ Exec
Returns a new instance of Exec.
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/bundler/cli/exec.rb', line 5 def initialize(, args) @options = @cmd = args.shift @args = args if RUBY_VERSION >= "2.0" @args << { :close_others => !.keep_file_descriptors? } elsif .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
#args ⇒ Object (readonly)
Returns the value of attribute args.
3 4 5 |
# File 'lib/bundler/cli/exec.rb', line 3 def args @args end |
#cmd ⇒ Object (readonly)
Returns the value of attribute cmd.
3 4 5 |
# File 'lib/bundler/cli/exec.rb', line 3 def cmd @cmd end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/bundler/cli/exec.rb', line 3 def @options end |
Instance Method Details
#run ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/bundler/cli/exec.rb', line 17 def run ui = Bundler.ui raise ArgumentError if cmd.nil? # First, try to exec directly to something in PATH SharedHelpers.set_bundle_environment bin_path = Bundler.which(@cmd) if bin_path Bundler.ui = nil Kernel.exec(bin_path, *args) end # If that didn't work, set up the whole bundle Bundler.definition.validate_ruby! Bundler.load.setup_environment Bundler.ui = nil Kernel.exec(@cmd, *args) rescue Errno::EACCES Bundler.ui = ui Bundler.ui.error "bundler: not executable: #{cmd}" exit 126 rescue Errno::ENOENT Bundler.ui = ui Bundler.ui.error "bundler: command not found: #{cmd}" Bundler.ui.warn "Install missing gem executables with `bundle install`" exit 127 rescue ArgumentError Bundler.ui = ui Bundler.ui.error "bundler: exec needs a command to run" exit 128 end |