Executor

Executor aims to provide a standard interface to work with binaries outside of ruby. It provides a standard implementation of the following requirements:

  • Capturing exit status and raising appropriate exception
  • Redirecting stderr
  • Asynchronous callbacks
  • Logging of command output

Options

  • redirect_stderr - This will cause any stderr from a command to be merged to stdout
  • raise_exceptions - This will listen for the exit code of the executed process and raise an exception if non 0
  • async - This is true by default if a block is given to Executor::command, async will create a new thread and execute the passed block upon completion of the process

  • logger - This takes an instance of logger (or an instance that implements #info)

Usage

Basic

require 'executor'

Executor::command("echo 5")

With redirection

Executor::command("expr 5 / 0", :redirect_stderr => true)

With one-time configuration

Executor::configure(
  :raise_exceptions => false
)

Executor::command("expr 5 / 0")

Special notes

  • In async mode (when block given or via explicit configuration), an exception if caught will be returned to the callback

credits: me, robgleeson@freenode