Shelltastic
Shelltastic is simple *nix shell wrapper for ruby. You can pass a single command or multiple commands to run.
Installation
Add this line to your application's Gemfile:
gem 'shelltastic'
And then execute:
$ bundle
Or install it yourself as:
$ gem install shelltastic
Usage
Run
ShellTastic::Command.run("date")
The above will return an Array of hash meta-data.
[{ :output, :pid, :error, :start, :stop, :total_time, :exitstatus, :command }]
For example, the above command's return would look something like this:
[
{
:output=>"Sun Feb 3 17:41:45 EST 2013",
:pid=>17507,
:command => "date",
:error=>false,
:start=>2013-02-03 17:41:45 -0500,
:stop=>2013-02-03 17:41:45 -0500,
:total_time=>0.004405272,
:exitstatus=>0
}
]
You can also pass multiple commands separated by commas or pass an array.
ShellTastic::Command.run("date", "whoami")
ShellTastic::Command.run(["date", "whoami"])
[
{
:output=>"Sat Apr 6 15:26:05 EDT 2013",
:pid=>92558,
:error=>false,
:start=>2013-04-06 15:26:05 -0400,
:stop=>2013-04-06 15:26:05 -0400,
:command=>"date",
:total_time=>0.010004,
:exitstatus=>0
},
{
:output=>"bradleydsmith",
:pid=>92559,
:error=>false,
:start=>2013-04-06 15:26:05 -0400,
:stop=>2013-04-06 15:26:05 -0400,
:command=>"whoami",
:total_time=>0.008262,
:exitstatus=>0
}
]
Start
Start will run a command in the background and return the pid immediately.
It takes the same command arguments as #run
The parent process (you) will not wait for the child to finish or return any information.
This is useful if you want to run a command, but dont care about the output or exit status.
BEWARE of long running commands that could fail. ShellTastic detaches itself from the child command.
ShellTastic::Command.start("sleep 10; date")
or
ShellTastic::Command.start(["sleep 10", "date"])
The above will return an Array of hash meta-data.
[{ :output, :pid, :error, :start, :stop, :total_time, :exitstatus, :command }]
For example, the above command's return would look something like this:
[
{
:output=>nil,
:pid=>17507,
:error=>false,
:start=>2013-02-03 17:41:45 -0500,
:stop=>2013-02-03 17:41:45 -0500,
:command=>"sleep 10; date",
:total_time=>0.004405272,
:exitstatus=>nil
}
]
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request