SuperDeploy - Capistrano recipes that make development easier¶ ↑
Many of the tasks in it are cobbled together from a number of other sources. I'd credit them, if I hadn't long since forgotten who wrote 'em. If it's you, just email me and I'll do so.
Unique to this release are some log watching recipes:
log - unified log tailer, unfiltered
log:short - unified log tailer, filtered for just Processing: lines and errors (incl. backtrace)
log:google - assuming you use Google Analytics style parameters to track incoming hits (or intra-site hits too), shows you the combinations of campaign, source, medium, the number of hits for each, and the last content type
log:google_subtotals - rolls up the hits for each campaign, source, medium, & content (rather than every combination)
log:smart - live log scraper; shows live and aggregate hits, unique IPs, load times, etc by URL hit. It aggregates errors, too - showing just the application-internal backtrace (stripping framework backtracing)
I use log:smart in production to give me a constant heartbeat of the app (what's being used, what methods are running too slowly, any errors that have been happening, overall site load, etc). It's particularly useful during a deployment, so you can make sure everything goes smoothly - or instantly and easily see what went wrong without slogging through a large log file.
Try it out and enjoy.
script/plugin install git://github.com/saizai/superdeploy.git cap -T # See all you can do cap log:smart # use the fancy live hits/errors/loadtimes watcher
Got other cool recipes?¶ ↑
Send me a pull request and I'll merge 'em in!
I'd like this to be a nice one-stop library of cool toys that make a Capistrano user's life easier.
Known bugs¶ ↑
the hits/min exponential moving average has something wrong with it. Never got around to fixing.
log:smart is not very routing-savvy. If you use something other than simple URLs, it's likely to get confused.
all log methods miss some hits. This is because underlyingly, Capistrano breaks stuff up arbitrarily (by size), rather than by paragraph of log. This could be fixed by writing a wrapper that acts as a buffer and stitches the log back together again. I never found it worth the bother. If you do, please feel free to commit a fix.
Recipe list¶ ↑
$ cap -T cap capistrano:upgrade # Update revisions log from Capistrano 1.x. cap deploy # Deploys your project. cap deploy:check # Test deployment dependencies. cap deploy:cleanup # Clean up old releases. cap deploy:cold # Deploys and starts a `cold' application. cap deploy:configs:setup # Create the shared configs directory on the... cap deploy:configs:symlink # Override config files w/ whatever's in the... cap deploy:god:starling:restart # Restart starling using god cap deploy:god:starling:start # Start starling using god cap deploy:god:starling:stop # Stop starling using god cap deploy:god:workling:restart # Restart workling using god cap deploy:god:workling:start # Start workling using god cap deploy:god:workling:stop # Stop workling using god cap deploy:long_deploy # like update:migrations, but will take down... cap deploy:migrate # Run the migrate rake task. cap deploy:migrations # Deploy and run pending migrations. cap deploy:mongrel:seesaw # seesaw::bounce the server. cap deploy:mongrel:setup_sudoers # Allow mongrel_rails to be sudo-run w/out p... cap deploy:passenger:restart # Restart using Passenger cap deploy:pending # Displays the commits since your last deploy. cap deploy:pending:diff # Displays the `diff' since your last deploy. cap deploy:rollback # Rolls back to a previous version and resta... cap deploy:rollback:code # Rolls back to the previously deployed vers... cap deploy:setup # Prepares one or more servers for deployment. cap deploy:start # Start app using god cap deploy:stop # Stop app using god cap deploy:symlink # Updates the symlink to the most recently d... cap deploy:update # Copies your project and updates the symlink. cap deploy:update_code # Copies your project to the remote servers. cap deploy:upload # Copy files to the currently deployed version. cap deploy:web:disable # Present a maintenance page to visitors. cap deploy:web:enable # Makes the application web-accessible again. cap invoke # Invoke a single command on the remote serv... cap log # Tail logs. cap log:google # Last column shows last ~1s of totals. cap log:google_subtotals # Display live google analytics info, by sub... cap log:short # Tail just the hits and errors; pass name o... cap log:smart # Display live timings, hitcounts, unique IP... cap shell # Begin an interactive Capistrano session. cap sys:apt:install # Installs a package using the aptitude comm... cap sys:apt:search # Search for aptitude packages on remote server cap sys:apt:update # Runs aptitude update on remote server cap sys:apt:upgrade # Runs aptitude upgrade on remote server cap sys:gems:install # Install a gem on the release servers cap sys:gems:list # List gems on release servers cap sys:gems:remove # Uninstall a gem from the release servers cap sys:gems:update # Update all gems on release servers cap sys:ruby # Grep for ruby processes cap sys:ssh_setup # Copies contents of ssh public keys into au... cap sys:uname # Check uname cap sys:uptime # Check uptime
Sai Emrys (saizai)
MIT or CC by-nc-sa (your pick) for my stuff; probably MIT for others'