Files | Admin

Notes:

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"