Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Chef Resources and Providers for deploying ruby web apps without capistrano
Ruby
Tree: 5c14e1c394

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
LICENSE
README.rdoc
Rakefile
TODO

README.rdoc

chef-deploy

A gem that provides resources and providers for deploying ruby web apps from chef recipes

Uses the same directory layout as capistrano and steals the git remote cached deploy strategy from cap and adapts it to work without cap and under chef. Not all options are required but they are all shown here as an example.

deploy "/data/myrackapp" do
  repo "git://github.com/engineyard/rack-app.git"
  branch "HEAD"
  user "ez"
  role "app_master"
  enable_submodules true
  migrate true
  migration_command "rake db:migrate"
  environment "production"
  shallow_clone true
  revision '0xbeadbeef'
  restart_command "touch tmp/restart.txt" # "monit restart all -g foo", etc.
  action :deploy # or :rollback
end

Chef-deploy is backwards compatible with capistrano in the fact that it uses the same exact filesystem layout. You can deploy with cap on top of a chef-deploy system and visca-versca(sic?).

Chef-deploy hooks:

If you create a APP_ROOT/deploy directory in your app you can place named hook files in there that will be triggered at the appropriate times during the deploy. the hooks are defined as follows:

APP_ROOT/

deploy/
  before_migrate.rb
  before_symlink.rb
  before_restart.rb
  after_restart.rb

These scripts will be called with two command line params in ARGV:

ruby before_migrate.rb production app_master

Where ARGV[0] is the RAILS_ENV, MERB_ENV or RACK_ENV and ARGV[1] is the role passed in to the deploy resource, this can be used to identify certain servers as database, application, cache, etc roles so you can act accordingly

Something went wrong with that request. Please try again.