Skip to content

Instantly share code, notes, and snippets.

@normancapule
Created March 5, 2014 13:50
Show Gist options
  • Save normancapule/9367511 to your computer and use it in GitHub Desktop.
Save normancapule/9367511 to your computer and use it in GitHub Desktop.
Sample Capistrano 3.1 Config
# config valid only for Capistrano 3.1
lock '3.1.0'
set :application, '<application_name>'
set :repo_url, '<url.git>'
set :deploy_via, :remote_cache
# Default branch is :master
# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
# Default deploy_to directory is /var/www/my_app
# set :deploy_to, '/var/www/my_app'
# Default value for :scm is :git
set :scm, :git
# Default value for :format is :pretty
set :format, :pretty
# Default value for :log_level is :debug
set :log_level, :debug
# Default value for :pty is false
# set :pty, true
# Default value for :linked_files is []
set :linked_files, %w{config/database.yml}
# Default value for linked_dirs is []
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/assets}
# Default value for default_env is {}
# set :default_env, { path: "/opt/ruby/bin:$PATH" }
# Default value for keep_releases is 5
set :keep_releases, 5
# tasks used in all environments
load "config/deploy/tasks.rb"
server '<ip>', user: '<user>', roles: %w{app}
set :branch, "<branch>"
set :deploy_to, "/var/ww/staging"
set :dbuser, "<dbuser>"
set :dbpass, "<dbpass>"
set :rails_env, 'staging'
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute "cd #{current_path} && touch tmp/restart.txt"
end
end
desc 'Post process of deployment'
task :post_process do
on roles(:app), in: :sequence, wait: 5 do
execute "cd #{current_path} && RAILS_ENV=#{fetch(:rails_env)} bundle install --deployment --without development test"
execute "cd #{current_path} && RAILS_ENV=#{fetch(:rails_env)} bundle exec rake assets:clean"
execute "cd #{current_path} && RAILS_ENV=#{fetch(:rails_env)} bundle exec rake assets:precompile"
execute "cd #{current_path} && RAILS_ENV=#{fetch(:rails_env)} bundle exec rake db:create db:migrate"
end
end
desc 'Seed'
task :seed do
on roles(:app), in: :sequence, wait: 5 do
execute "cd #{current_path} && RAILS_ENV=#{fetch(:rails_env)} bundle exec rake db:seed"
end
end
after :deploy, :post_process
after :post_process, :restart
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
# Here we can do anything such as:
# within release_path do
# execute :rake, 'cache:clear'
# end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment