¶ ↑
rush – manage your unix systems with pure Rubyrush is a unix integration library and an interactive shell which uses pure Ruby syntax. Walk directory trees; create, copy, search, and destroy files; find and kill processes - everything you’d normally do with shell commands, now in the strict and elegant world of Ruby.
¶ ↑
UsageCount the number of classes in your project using bash:
find myproj -name \*.rb | xargs grep '^\s*class' | wc -l
In rush, this is:
myproj['**/*.rb'].search(/^\s*class/).lines.size
Pesky stray mongrels? In bash:
kill `ps aux | grep mongrel_rails | grep -v grep | cut -c 10-20`
In rush:
processes.filter(:cmdline => /mongrel_rails/).kill
¶ ↑
As a libraryrequire 'rubygems' require 'rush' file = Rush['/tmp/myfile'] file.write "hello" puts file.contents file.destroy puts Rush.my_process.pid puts Rush.processes.size puts Rush.bash("echo SHELL COMMAND | tr A-Z a-z") puts Rush.launch_dir['*.rb'].search(/Rush/).entries.inspect
¶ ↑
Invoking the shellRun the “rush” binary to enter the interactive shell.
¶ ↑
Remote access and clusteringrush can control any number of remote machines from a single location. Copy files or directories between servers as seamlessly as if it was all local.
Example of remote access:
local = Rush::Box.new('localhost') remote = Rush::Box.new('my.remote.server.com') local_dir = local['/Users/adam/myproj/'] remote_dir = remote['/home/myproj/app/'] local_dir.copy_to remote_dir remote_dir['**/.svn/'].each { |d| d.destroy }
Clustering:
local_dir = Rush::Box.new('localhost')['/Users/adam/server_logs/'].create servers = %w(www1 www2 www3).map { |n| Rush::Box.new(n) } servers.each { |s| s['/var/log/nginx/access.log'].copy_to local_dir["#{s.host}_access.log"] }
¶ ↑
ReferenceFor more details on syntax and commands, see:
-
Rush
-
Rush::Entry
-
Rush::File
-
Rush::Dir
-
Rush::Commands
-
Rush::Box
-
Rush::Process
¶ ↑
MetaCreated by Adam Wiggins
Patches contributed by Chihiro Ito, Gabriel Ware, Michael Schutte, Ricardo Chimal Jr., and Nicholas Schlueter, Pedro Belo, and Martin Kuehl
Logo by James Lindenbaum
Released under the MIT License: www.opensource.org/licenses/mit-license.php