Class: Psychic::Shell::MixlibShellOutExecutor
- Inherits:
-
Object
- Object
- Psychic::Shell::MixlibShellOutExecutor
- Includes:
- Logger
- Defined in:
- lib/psychic/shell/mixlib_shellout_executor.rb
Constant Summary collapse
- MIXLIB_SHELLOUT_EXCEPTION_CLASSES =
Mixlib::ShellOut.constants.map do|name| klass = Mixlib::ShellOut.const_get(name) if klass.is_a?(Class) && klass <= RuntimeError klass else nil end end.compact
Instance Attribute Summary collapse
-
#shell ⇒ Object
readonly
Returns the value of attribute shell.
Instance Method Summary collapse
Methods included from Logger
#log_level=, #logger, #new_logger
Instance Attribute Details
#shell ⇒ Object (readonly)
Returns the value of attribute shell.
25 26 27 |
# File 'lib/psychic/shell/mixlib_shellout_executor.rb', line 25 def shell @shell end |
Instance Method Details
#execute(command, opts) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/psychic/shell/mixlib_shellout_executor.rb', line 36 def execute(command, opts) @logger = opts.delete(:logger) || logger @shell = Mixlib::ShellOut.new(command, opts) @shell.live_stream = IOToLog.new(@logger) @shell.run_command execution_result rescue SystemCallError, *MIXLIB_SHELLOUT_EXCEPTION_CLASSES, TypeError => e # See https://github.com/opscode/mixlib-shellout/issues/62 execution_error = ExecutionError.new(e) execution_error.execution_result = execution_result raise execution_error end |