0.01
No commit activity in last 3 years
No release in over 3 years
Collection of capistrano extensions focused on configuration, provisioning, and management.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 1.2.9
 Project Readme

capistrano-boss¶ ↑

Collection of extensions for managing Rails projects via Capistrano in production environments.

These recipes are extracted from two years of running Ruby on Rails projects in production environments.


Installation¶ ↑

Install the gem:

sudo gem install capistrano-boss

Capify a project:

rails test
cd test
capify .

Capbossify to add the extensions:

capbossify .

The Capfile will be extended to include the capistrano-boss recipes.


Usage¶ ↑

Once capbossify has been used on a project, the recipes will be added to the list of available recipes.


Recipes¶ ↑

The capistrano-boss recipes are split into several namespaces.

Deploy¶ ↑

One extra recipe is added for SSH key management:

cap deploy:authorized_keys         # Upload authorized_keys file.

This task uploads an authorized_keys file to the cap user .ssh/authorized_keys location. Keyfile is expected to be authorized_keys or set the environment variable keys:

cap deploy:authorized_keys keys=my_auth_keys

Apache¶ ↑

The set of apache recipes are for using the standard apachectl options as well as some convenience recipes for handling logs.

cap apache:graceful                # Graceful Apache web service
cap apache:graceful_stop           # Graceful-stop Apache web service
cap apache:log:fetch               # Download Apache httpd logs
cap apache:log:tail                # Tail Apache httpd logs
cap apache:log:watch               # Watch Apache httpd logs
cap apache:restart                 # Restart Apache web service
cap apache:start                   # Start Apache web service
cap apache:stop                    # Stop Apache web service

By default, the variable apache_logs is set to an array that includes the error and access log from the default location for Red Hat. Override with the location of the logs or to add custom logs.

The control tasks use apachectl variable to determine the select the HTTP server control interface.

apache:log:fetch¶ ↑

Copies log files to ./log/deploy/RAILS_ENV/TIMESTAMP/HOST-LOGFILENAME.log.

apache:log:tail¶ ↑

Tail last n lines of the log files by host. Set environment variable lines to set number of lines.

cap apache:log:tail lines=50
apache:log:watch¶ ↑

Running tail of all the log files with a host and timestamp for each line. Useful to watch all the logs in real-time.

Passenger¶ ↑

Simple task to restart a Passenger managed application. This recipe is an alias for the touch tmp/restart.txt method. It makes other tasks that want to restart the app more readable.

cap passenger:restart              # Restart Rails application

Rails¶ ↑

The Rails set of recipes help with configuration and monitoring.

cap rails:about                    # About Rails environment
cap rails:config                   # Generate Rails configuration
cap rails:config:database          # Create a database.yml file in shared con...
cap rails:deploy:config            # Deploy Rails configuration files
cap rails:deploy:snapshot_database # Snapshot database.
cap rails:log:fetch                # Download Rails application log
cap rails:log:tail                 # Tail Rails application log
cap rails:log:watch                # Watch Rails application log

If the application is not rails, set the variable rails_disable to true in the ./config/deploy.rb file to disable all the Rails recipes:

set :rails_disable, false
rails:config¶ ↑

Meta recipe that runs all the config tasks. Useful when initializing a new environment (when using the capistrano-ext multistage extension for example). Creates a SHARED_PATH/config directory for config files that don’t change for each deploy.

rails:config:database¶ ↑

Generate SHARED_PATH/config/database.yml file. It will prompt for the database password if not provided. This method allows for writing the config file into a production environment without checking in the database password. Set db_* variables to write the environment section in the database.yml file. Defaults are valid for MySQL with database default of USER_RAILS_ENV.

rails:deploy:config¶ ↑

Symlink SHARED_PATH/config/database.yml to CURRENT_PATH/config/database.yml. Used for deploys to utilize the shared database config.

rails:deploy:snapshot_database¶ ↑

Run a MySQL dump to the location specified by environment variable dbpath. Default location is SHARED_PATH/backup/db/DATABASE_TIMESTAMP.sql.gz.

cap rails:deploy:snapshot_database dbpath=/var/backup/db
rails:log:fetch¶ ↑

Copies RAILS_ENV.log file to ./log/deploy/RAILS_ENV/TIMESTAMP/HOST-RAILS_ENV.log

rails:log:tail¶ ↑

Tail last n lines of the log files by host. Set environment variable lines to set number of lines.

cap rails:log:tail lines=50
rails:log:watch¶ ↑

Running tail of all the log files with a host and timestamp for each line. Useful to watch all the logs in real-time.

Subversion¶ ↑

Support for the subversion scm has been extended to include branch and tag variables. If either variable is set, the repository path is adjusted to take the tag or branch into account. The default is to use trunk. The repository should be the base URL without trunk/branches/tags. Also, it assumes a standard subversion layout:

project/
  branches/
  tags/
  trunk/

Examples:

trunk¶ ↑

set :repository, '/path/to/svn/root/project'
=> Repository is /path/to/svn/root/project/trunk at runtime

branch¶ ↑

set :repository, '/path/to/svn/root/project'
set :branch, 'mybranch'
=> Repository is /path/to/svn/root/project/branches/mybranch

tag¶ ↑

set :repository, '/path/to/svn/root/project'
set :tag, 'mytag'
=> Repository is /path/to/svn/root/project/tags/mytag

Copyright © 2009-2010 Andrew Carter. See LICENSE for details.