- Exceptions framework, including remote exceptions.
box['/does/not/exist'].contents with raise Rush::DoesNotExist, which
is transmitted across the wire to the client. All Rush exceptions can
be found in exceptions.rb. The interactive shell catches all
rush-specific exceptions and surpresses the backtrace, for a one-line
error message (comparable to bash).
- Box#bash: execute a bash shell command on the box. Returns stdout;
raises Rush::BashFailed with stderr as the exception message if the
command did not return 0.
- Dir#bash, sames as Box#bash but runs the command from within the dir.
- FindBy extensions, which select members of an array on any arbitrary
field. find_by fetches the first match, find_all_by fetches all.
Examples: processes.find_by_pid(123),
processes.find_by_cmdline(/mongrel_rails/)
- Process#parent and Process#children. Get parent or child processes
of a process, returned as a Rush::Process object (or an array of such,
for children).
- Improved tab completion, contributed by Chihiro Ito.
- Windows process lookup, contributed by Gabriel Ware
- rushd writes a log to rushd.log, to better diagnose problems with a
remote connection.
- Box#alive? to check if a box is responding to commands.
- Entry#exists? to check if a file or dir exists.
- Dir#purge to empty out the contents of a directory. Equivalent to
dir.contents.each { |f| f.destroy }
- Box#establish_connection takes a :timeout option, which can be a
number of seconds, or :infinite, to be used for the ssh tunnel.
Default is still 9000 seconds (about 3 hours).
- Process#kill doesn't return until the process is really dead (code
swiped from the god project's process.rb). So
processes.find_by_cmdline(/mongrel_rails/).each { |p| p.kill } will
kill all your mongrels for sure, even wedged ones.
- The interactive shell now executes in the context of a Rush::Box.
This makes the internal implementation a bit cleaner, but also gives
access to all the methods on Rush::Box. For example, you can do: bash
"adduser -m joe" rather than Rush::Box.new('localhost').bash "adduser
-m joe"