Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

file 136 lines (107 sloc) 4.425 kb

Description

Want Capistrano to talk to God? Find San Juan

Requirements

Install


gem install jnewland-san_juan
OR
gem install jnewland-san_juan -s http://gems.github.com

Usage

In your Capistrano deploy recipie:


require 'san_juan'

role :app, 'foo.example.com'
role :web, 'bar.example.com'

san_juan.role :app, %w(mongrels memcached)
san_juan.role :web, %w(nginx)

Now, check out cap -T:


  ...
  cap god:all:quit                                   # Quit god, but not the proce...
  cap god:all:reload                                 # Reloading God Config
  cap god:all:start                                  # Start god
  cap god:all:start_interactive                      # Start god interactively
  cap god:all:status                                 # Describe the status of the ...
  cap god:all:terminate                              # Terminate god and all monit...
  cap god:app:mongrels:log                           # Log mongrels
  cap god:app:mongrels:remove                        # Remove mongrels
  cap god:app:mongrels:restart                       # Restart mongrels
  cap god:app:mongrels:start                         # Start mongrels
  cap god:app:mongrels:stop                          # Stop mongrels
  cap god:app:mongrels:unmonitor                     # Unmonitor mongrels
  cap god:app:memcached:log                          # Log memcached
  cap god:app:memcached:remove                       # Remove memcached
  cap god:app:memcached:restart                      # Restart memcached
  cap god:app:memcached:start                        # Start memcached
  cap god:app:memcached:stop                         # Stop memcached
  cap god:app:memcached:unmonitor                    # Unmonitor memcached
  cap god:app:quit                                   # Quit god, but not the proce...
  cap god:app:reload                                 # Reload the god config file
  cap god:app:start                                  # Start god
  cap god:app:start_interactive                      # Start god interactively
  cap god:app:terminate                              # Terminate god and all monit...
  cap god:web:nginx:log                              # Log nginx
  cap god:web:nginx:remove                           # Remove nginx
  cap god:web:nginx:restart                          # Restart nginx
  cap god:web:nginx:start                            # Start nginx
  cap god:web:nginx:stop                             # Stop nginx
  cap god:web:nginx:unmonitor                        # Unmonitor nginx
  cap god:web:quit                                   # Quit god, but not the proce...
  cap god:web:reload                                 # Reload the god config file
  cap god:web:start                                  # Start god
  cap god:web:start_interactive                      # Start god interactively
  cap god:web:terminate                              # Terminate god and all monit...
  ...

To make capistrano start, stop, and restart your app using God, override the
deploy:start, deploy:stop, and deploy:restart tasks:


namespace :deploy do
  desc "Use god to restart the app"
  task :restart do
    god.all.reload #ensures any changes to the god config are applied at deploy
    god.app.mongrels.restart
    # god.web.nginx.restart
    # ...
  end

  desc "Use god to start the app"
  task :start do
    god.all.start
  end

  desc "Use god to stop the app"
  task :stop do
    god.all.terminate
  end
end

Tweaks

A few of the tasks in the god:all namespace require the path to your god
configuration file. This defaults to:

"#{current_path}/config/god/#{role}.god"

This can be changed by setting the god_config_path capistrano variable:


require 'san_juan'

set :god_config_path, "/path/to/config"

role :app, 'foo.example.com'
role :web, 'bar.example.com'

san_juan.role :app, %w(mongrels memcached)
san_juan.role :web, %w(nginx)


Author

Jesse Newland

License

WTFPL

Something went wrong with that request. Please try again.