# Capistrano file for setting up unicorn during application deployment set :template_path, 'config/deploy/templates' set :unicorn_conf_template, “#{fetch(:template_path)}/unicorn.rb.erb” set :unicorn_init_template, “#{fetch(:template_path)}/unicorn_init.sh.erb” set :unicorn_conf, “tmp/unicorn.rb” set :unicorn_init, “tmp/unicorn_init.sh”
namespace :unicorn do
desc "generate unicorn.conf for #{fetch(:application)}" task :generate_unicorn_conf do on roles(:app) do info "generating #{fetch(:application)} unicorn.conf file" open(fetch(:unicorn_conf), 'w') do |f| f.puts(ERB.new(File.read(fetch(:unicorn_conf_template))).result(binding)) end end end desc "generate unicorn_init.sh for #{fetch(:application)}" task :generate_unicorn_init do on roles(:app) do info "generating #{fetch(:application)} unicorn_init.sh file" open(fetch(:unicorn_init), 'w') do |f| f.puts(ERB.new(File.read(fetch(:unicorn_init_template))).result(binding)) end end end desc "upload #{fetch(:application)} unicorn.conf" task :upload_unicorn_conf do on roles(:app) do upload!(fetch(:unicorn_conf), "#{current_path}/config") end end desc "upload #{fetch(:application)} unicorn_init.sh" task :upload_unicorn_init do on roles(:app) do upload!(fetch(:unicorn_init), "#{current_path}/config") end end desc "delete local #{fetch(:application)} unicorn.conf" task :remove_unicorn_conf do on roles(:app) do info 'Deleting local unicorn.conf' FileUtils.rm(fetch(:unicorn_conf)) end end desc "delete local #{fetch(:application)} unicorn.init.sh" task :remove_unicorn_init do on roles(:app) do info 'Deleting local unicorn_init.sh' FileUtils.rm(fetch(:unicorn_init)) end end desc "create symlink for #{fetch(:application)} unicorn_init.sh" task :create_symlink do on roles(:app) do info 'Symlinking unicorn_init.sh' execute :sudo, "chmod +x #{current_path}/config/unicorn_init.sh" execute :sudo, "ln -s #{current_path}/config/unicorn_init.sh /etc/init.d/#{fetch(:application)}_unicorn" end end desc "remove symlink for #{fetch(:application)} unicorn_init.sh" task :remove_symlink do on roles(:app) do info 'Removing unicorn_init.sh symlink' execute :sudo, "rm -rf /etc/init.d/unicorn-#{fetch(:application)}" execute :sudo, "rm -rf /etc/init.d/#{fetch(:application)}_unicorn" end end desc "add unicorn config to #{fetch(:application)}" task :create_unicorn_config do on roles(:app) do |host| invoke 'unicorn:generate_unicorn_conf' invoke 'unicorn:upload_unicorn_conf' invoke 'unicorn:remove_unicorn_conf' end end desc "restart unicorn for #{fetch(:application)}" task :restart do on roles(:app) do info 'Restarting unicorn' execute :sudo, "/etc/init.d/#{fetch(:application)}_unicorn stop" sleep 3 execute :sudo, "/etc/init.d/#{fetch(:application)}_unicorn start" end end desc "Set auto-start of unicorn for #{fetch(:application)}" task :autostart do on roles(:app) do info 'Setting unicorn autostart in rc.*' execute :sudo, 'update-rc.d online_community_unicorn defaults' end end desc "add unicorn init config to #{fetch(:application)}" task :create_unicorn_init do on roles(:app) do |host| invoke 'unicorn:generate_unicorn_init' invoke 'unicorn:upload_unicorn_init' invoke 'unicorn:remove_unicorn_init' invoke 'unicorn:remove_symlink' invoke 'unicorn:create_symlink' end end
end