Yad: Yet Another Deployer
Description
Vlad the Deployer by Ryan Davis, Eric Hodel and Wilson Bilkovich is great, but it is not exactly what I wanted. The underlying Rake::RemoteTask is awesome, so I wanted to keep that. However, I wanted to change how the recipes work. Therefore, I created yet another deployer, Yad.
In general, Yad is a deployer for database-backed applications in the style of Capistrano by Jamis Buck. However, in addition to deploying Rails web applications, it can be used to deploy applications that do not have a web tier and work from a cron task or something of that nature.
Yad works by setting up a a core set of tasks that do nothing by default. It is up to you to define delegates that will take the actions specific for your application.
http://sites.google.com/a/perrysburghacker.com/yad/_/rsrc/1247934950955/Home/yad.png
At this time, the following delegates are supported:
Source Code Managers
- Git
Database Managers
- None
- Rails
Frameworks
- None
- Rails
Application Servers
- Passenger
Maintenance Page
- Shared System (i.e. maintenance.html in the shared/config directory copied to the shared/system directory to be seen by your web server)
Web Servers
- Apache
Installation
sudo gem install yad
or sudo gem install ottobar-yad
Examples
Single stage with git, rails and passenger
-
Create a deploy.rake file:
# #{Rails.root}/lib/tasks/deploy.rake begin require 'yad' set :application, "myapp" set :repository, "path/to/my/repository/#{application}.git" set :domain, "mydomain.com" set :deploy_to "/home/deploy/projects/#{application}" set :scm, :git set :framework, :rails # assumes that you have a config/database_production.yml file in your repository set :framework_update_db_config_via, :copy set :db, :rails set :app, :passenger desc "Deploy a new version of the application" task "yad:deploy" => %w(yad:update yad:start_app yad:cleanup) desc "Deploy a new version of the application and run database migrations" task "yad:deploy_with_migrations" => %w(yad:update yad:migrate_db yad:start_app yad:cleanup) rescue LoadError puts "Yad not available. Install it with: sudo gem install yad" end -
For initial deployment, run the following tasks:
rake yad:setup rake yad:update rake yad:create_db rake yad:migrate_db -
Then, configure or otherwise set up your web server
-
For subsequent releases, run:
rake yad:deploy or rake yad:deploy_with_migrations
-- see the FAQ for more details ++
Links
- http://github.com/ottobar/yad/tree/master
- http://yad.rubyforge.org
- http://rubyforge.org/projects/yad
Copyright
Copyright (c) 2009 Don Barlow. See LICENSE for details.