Skip to content

Instantly share code, notes, and snippets.

@dpmccabe
Created January 5, 2012 17:58
Show Gist options
  • Save dpmccabe/1566380 to your computer and use it in GitHub Desktop.
Save dpmccabe/1566380 to your computer and use it in GitHub Desktop.
require 'capistrano/ext/multistage'
require "bundler/capistrano"
require "delayed/recipes"
require 'capistrano_colors'
# multistage ----------------
set :stages, %w(staging production)
set :default_stage, "staging"
# application ---------------
set :application, 'example'
# user ----------------------
set :use_sudo, false
# git ----------------------
default_run_options[:pty] = true
set :scm, 'git'
set :deploy_via, :fast_remote_cache
set :scm_verbose, true
set :repository, 'git@github.com:example/example.git'
# bundler ------------------
set :bundle_without, [:development, :test]
# tasks ---------------------
namespace :deploy do
# restart passenger
task :restart do
run "touch #{current_path}/tmp/restart.txt"
end
# seed the database
task :seed do
run "cd #{current_path}; bundle exec rake db:seed RAILS_ENV=#{rails_env}; touch #{current_path}/tmp/restart.txt"
end
# migrate the database
task :migrate do
run "cd #{current_path}; bundle exec rake db:migrate RAILS_ENV=#{rails_env}"
end
task :start do
# nothing
end
end
desc "Generate static error pages"
task :error_pages, :except => {:no_release => true} do
run "cd #{current_path}; bundle exec rake error_pages RAILS_ENV=#{rails_env}"
end
before "deploy:restart", "delayed_job:stop"
after "deploy:restart", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:start", "delayed_job:start"
after "deploy:start", "error_pages"
after "deploy:update_code", "deploy:migrate"
# cronjobs
set :whenever_environment, defer { rails_env }
set :whenever_command, "bundle exec whenever"
set :output, '~/cron.log'
require "whenever/capistrano"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment