Release Name: 0.2
Notes:
Changes:
- 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"
|