Class: VcoWorkflows::Runner
- Inherits:
-
Object
- Object
- VcoWorkflows::Runner
- Defined in:
- lib/vcoworkflows/runner.rb
Overview
wrapper to assist aruba in single process execution
Instance Method Summary collapse
-
#execute! ⇒ Object
Do the things!.
-
#initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) ⇒ Runner
constructor
Allow everything fun to be injected from the outside while defaulting to normal implementations.
Constructor Details
#initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) ⇒ Runner
Allow everything fun to be injected from the outside while defaulting to normal implementations.
8 9 10 |
# File 'lib/vcoworkflows/runner.rb', line 8 def initialize(argv, stdin = STDIN, stdout = STDOUT, stderr = STDERR, kernel = Kernel) @argv, @stdin, @stdout, @stderr, @kernel = argv, stdin, stdout, stderr, kernel end |
Instance Method Details
#execute! ⇒ Object
Do the things!
13 14 15 16 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 |
# File 'lib/vcoworkflows/runner.rb', line 13 def execute! exit_code = begin # Thor accesses these streams directly rather than letting them be # injected, so we replace them... $stderr = @stderr $stdin = @stdin $stdout = @stdout VcoWorkflows::CLI.start(@argv) # Thor::Base#start does not have a return value, assume success if no # exception is raised. 0 rescue StandardError => e # The ruby interpreter would pipe this to STDERR and exit 1 in the # case of an unhandled exception b = e.backtrace b.unshift("#{b.shift}: #{e.} (#{e.class})") @stderr.puts(b.map { |s| "\tfrom #{s}" }.join("\n")) 1 ensure # put them back. $stderr = STDERR $stdin = STDIN $stdout = STDOUT end # Proxy exit code back to the injected kernel. @kernel.exit(exit_code) end |