Skip to content

Instantly share code, notes, and snippets.

@darkside
Created January 17, 2011 16:27
Show Gist options
  • Save darkside/783051 to your computer and use it in GitHub Desktop.
Save darkside/783051 to your computer and use it in GitHub Desktop.
Capistrano Recipes Application.rb
Capistrano::Configuration.instance(:must_exist).load do
# User settings
set :user, 'deploy' unless exists?(:user)
set :group,'www-data' unless exists?(:group)
# Server settings
set :app_server, :unicorn unless exists?(:app_server)
set :web_server, :nginx unless exists?(:web_server)
set :runner, user unless exists?(:runner)
# The port to listen to, normally we default to 80
set :application_port, 80 unless exists?(:application_port)
# Are we using ssl as well? Used by generators to configure a ssl host
set :application_uses_ssl, true unless exists?(:application_uses_ssl)
# The port to listen to https requests, usually 443
set :application_port_ssl, 443 unless exists?(:application_port_ssl)
# Database settings
set :database, :mysql unless exists?(:database)
# SCM settings
set :scm, :git
set :branch, 'master' unless exists?(:branch)
set :deploy_to, "/var/www/apps/#{application}" unless exists?(:deploy_to)
set :deploy_via, :remote_cache
set :keep_releases, 3
set :git_enable_submodules, true
set :rails_env, 'production' unless exists?(:rails_env)
set :use_sudo, false
# Git settings for capistrano
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
# RVM settings
set :using_rvm, true unless exists?(:using_rvm)
# Sets the rvm to a specific version (or whatever env you want it to run in)
set :rvm_ruby_string, 'ree' unless exists?(:rvm_ruby_string)
# Daemons settings
# The unix socket that unicorn will be attached to.
# Also, nginx will upstream to this guy.
# The *nix place for socks is /var/run, so we should probably put it there
# Make sure the runner can access this though.
set :sockets_path, "/var/run/#{application}" unless exists?(:sockets_path)
# Just to be safe, put the pid somewhere that survives deploys. shared/pids is
# a good choice as any.
set(:pids_path) { File.join(shared_path, "pids") } unless exists?(:pids_path)
set :monitorer, 'god' unless exists?(:monitorer)
# Application settings
set :shared_dirs, %w( config uploads backup bundle tmp ) unless exists?(:shared_dirs)
namespace :app do
task :setup, :roles => :app do
commands = shared_dirs.map do |path|
"if [ ! -d '#{path}' ]; then mkdir -p #{path}; fi;"
end
run "cd #{shared_path}; #{commands.join(' ')}"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment