Created
March 12, 2013 14:30
-
-
Save nacengineer/5143331 to your computer and use it in GitHub Desktop.
Capistrano tricks to add to your deploy.rb file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'capistrano_colors' | |
require 'capistrano/maintenance' | |
require 'capistrano/ext/multistage' | |
require 'colored' | |
require 'ruby_cowsay' | |
require 'manic_monkey' | |
# change this to ::INFO if you need more... umm... info | |
# change this to ::IMPORTANT for normal deploys | |
logger.level = Logger::IMPORTANT | |
capistrano_color_matchers = [ | |
{ :match => /command finished/, | |
:color => :hide, | |
:prio => 10 }, | |
{ :match => /executing command/, | |
:color => :blue, | |
:prio => 10, | |
:attribute => :underscore }, | |
{ :match => /^transaction: commit$/, | |
:color => :magenta, | |
:prio => 10, | |
:attribute => :blink }, | |
{ :match => /git/, | |
:color => :white, | |
:prio => 20, | |
:attribute => :reverse }, | |
] | |
colorize( capistrano_color_matchers ) | |
STDOUT.sync = true | |
def intro_cow( cow = 'stegosaurus') | |
cow = Cow.new({ :cow => cow }) | |
msg = "#{Time.now.strftime("%c")}.\n Deploying to #{stage}, dude!" | |
cow.say(msg) | |
end | |
# spinner stuff | |
@spinner_running = false | |
@chars = ['|', '/', '-', '\\'] | |
@spinner = Thread.new do | |
loop do | |
Thread.stop unless @spinner_running | |
print @chars[0] | |
sleep(0.1) | |
print "\b" | |
@chars.push @chars.shift | |
end | |
end | |
def start_spinner | |
@spinner_running = true | |
@spinner.wakeup | |
end | |
# stops the spinner and backspaces over last displayed character | |
def stop_spinner | |
@spinner_running = false | |
print "\b" | |
end | |
task :uname do | |
run "uname -a" | |
end | |
namespace :deploy do | |
[:restart, :stop, :start].each do |t| | |
desc "#{t.to_s.capitalize} the Unicorn web server" | |
task t, :roles => :app, :except => {:no_release => true} do | |
run "/etc/init.d/#{application} #{ t }" | |
end | |
end | |
task :symlink_logs, :roles => :web, :except => { :no_release => true } do | |
invoke_command <<-CMD, :via => run_method | |
cd #{release_path}; | |
ln -nfs #{shared_path}/log #{release_path}/log; | |
CMD | |
end | |
task :symlink_database_yml, :roles => :web, :except => { :no_release => true } do | |
invoke_command <<-CMD, :via => run_method | |
cd #{release_path}; | |
rm config/database.yml; | |
ln -nfs #{shared_path}/system/database.yml #{release_path}/config/database.yml; | |
CMD | |
end | |
task :symlink_database, :roles => :web, :except => { :no_release => true } do | |
invoke_command <<-CMD, :via => run_method | |
cd #{release_path}; | |
ln -nfs #{shared_path}/db/production.sqlite3 #{release_path}/db/production.sqlite3; | |
CMD | |
end | |
task :symlink_assets, :roles => :web, :except => { :no_release => true } do | |
invoke_command <<-CMD, :via => run_method | |
cd #{release_path}; | |
rm -rf #{release_path}/public/assets; | |
ln -nfs #{shared_path}/assets #{release_path}/public/assets; | |
CMD | |
end | |
task :symlink_devise_keys, :roles => :web, :except => { :no_release => true } do | |
invoke_command <<-CMD, :via => run_method | |
cd #{release_path}; | |
ln -nfs #{shared_path}/config/devise_keys.rb #{release_path}/config/initializers/01_devise_keys.rb; | |
CMD | |
end | |
# we only want these for minimalized | |
if logger.level == 0 | |
before 'deploy' do | |
puts intro_cow | |
end | |
before 'deploy:update_code' do | |
puts '---> '.green << 'Start Updating code' | |
end | |
after 'deploy:update_code' do | |
puts '---> '.green << 'Code updating finished? ' << ' YES'.green | |
end | |
before 'deploy:symlink_devise_keys' do | |
print ' --> '.yellow << 'Symlinking devise keys.............' | |
start_spinner() | |
end | |
after 'deploy:symlink_devise_keys' do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before 'deploy:migrate' do | |
print ' --> '.yellow << 'Migrating database.................' | |
start_spinner() | |
end | |
after 'deploy:migrate' do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before 'deploy:symlink_database' do | |
print ' --> '.yellow << 'Symlinking database................' | |
start_spinner() | |
end | |
after 'deploy:symlink_database' do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before 'deploy:symlink_database_yml' do | |
print ' --> '.yellow << 'Symlinking database yml............' | |
start_spinner() | |
end | |
after 'deploy:symlink_database_yml' do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before 'deploy:symlink_assets' do | |
print ' --> '.yellow << 'Symlinking asset files.............' | |
start_spinner() | |
end | |
after 'deploy:symlink_assets' do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "bundle:install" do | |
print " --> ".yellow << "Hardcore bundle action............" | |
start_spinner() | |
end | |
after "bundle:install" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:assets:precompile" do | |
print " --> ".yellow << "Assets Precompilation............." | |
start_spinner() | |
end | |
after "deploy:assets:precompile" do | |
stop_spinner() | |
assets_skipped ? (puts " ✗ SKIP".red) : (puts " ✓".green) | |
end | |
before "deploy:assets_compress" do | |
print " --> ".yellow << "Assets Compress............." | |
start_spinner() | |
end | |
after "deploy:assets_compress" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:stop" do | |
print "---> ".green << "#{server_type} stop................" | |
start_spinner() | |
end | |
after "deploy:stop" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:start" do | |
print "---> ".green << "#{server_type} start..............." | |
start_spinner() | |
end | |
after "deploy:start" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:restart" do | |
print "---> ".green << "#{server_type} restart............." | |
start_spinner() | |
end | |
after "deploy:restart" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:web:disable" do | |
print "---> ".green << "Put maintenance screen............." | |
start_spinner() | |
end | |
after "deploy:web:disable" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
before "deploy:web:enable" do | |
print "---> ".green << "Remove maintenance screen..." | |
start_spinner() | |
end | |
after "deploy:web:enable" do | |
stop_spinner() | |
puts " ✓".green | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment