Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
95 lines (80 sloc) 6 KB

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:

plain

  • log - unified log tailer, unfiltered

  • log:short - unified log tailer, filtered for just Processing: lines and errors (incl. backtrace)

rich

  • 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)

richest

  • 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.

Installation

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

Info

Author

Sai Emrys (saizai)

License

MIT or CC by-nc-sa (your pick) for my stuff; probably MIT for others'

Jump to Line
Something went wrong with that request. Please try again.