Skip to content

Instantly share code, notes, and snippets.

@keithlayne
Last active August 29, 2015 14:25
Show Gist options
  • Select an option

  • Save keithlayne/675ac7770e58f5d4f8e1 to your computer and use it in GitHub Desktop.

Select an option

Save keithlayne/675ac7770e58f5d4f8e1 to your computer and use it in GitHub Desktop.
diff --git a/config/deploy.rb b/config/deploy.rb
index d433aad..c222728 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -45,6 +45,7 @@ set :resque_service_name, ->{ "#{fetch :application}_#{fetch :rails_env}-resque"
set :unicorn_service_name, ->{ "#{fetch :application}_#{fetch :rails_env}-unicorn" }
namespace :deploy do
+ desc 'Load db/schema.rb'
task :load_schema do
on roles(:db, select: :primary) do
within release_path do
@@ -56,8 +57,9 @@ namespace :deploy do
end
{ start: :start, restart: :reload, stop: :stop }.each do |task, command|
+ desc "#{task.to_s.capitalize} unicorn service"
task task do
- on roles(:app, except: :no_release) do
+ on roles(:app, exclude: :no_release) do
execute *%W(sudo /etc/init.d/#{fetch(:unicorn_service_name)} #{command})
end
end
@@ -65,6 +67,7 @@ namespace :deploy do
end
namespace :cache do
+ desc 'Clear Nginx cache'
task :clear do
on roles(:web) do
execute *%w(sudo -u www-data rm -f /var/cache/nginx/dm_production/*)
@@ -75,6 +78,7 @@ end
namespace :resque do
namespace :pool do
[:start, :restart, :stop].each do |command|
+ desc "#{command.capitalize} Resque pool"
task command do
on roles(:resque) do
execute *%W(sudo /etc/init.d/#{fetch(:resque_service_name)} #{command})
@@ -84,6 +88,7 @@ namespace :resque do
end
end
+desc 'Refresh sitemaps'
task :refresh_sitemaps do
on roles(:app) do
within release_path do
@@ -95,21 +100,31 @@ task :refresh_sitemaps do
end
namespace :assets do
+ desc 'Clean assets locally'
+ task :clean do
+ run_locally do
+ with rails_env: fetch(:rails_env) do
+ rake 'assets:clean'
+ end
+ end
+ end
+
+ desc 'Precompile assets locally'
task :precompile do
run_locally do
with rails_env: fetch(:rails_env) do
- execute *%w(rake assets:precompile assets:clean)
+ rake 'assets:precompile'
end
end
end
+ desc 'Update app server instances with new assets via rsync'
task sync: :precompile do
on roles(:app) do
- # upload! 'public/assets', "#{release_path}/public/", recursive: true
rsync_path = "#{host.user}@#{host.hostname}:#{shared_path}/public/"
- connection_string = "ssh -p #{fetch(:ssh_options)[:port]}"
+ connection_string = "ssh -p #{fetch(:ssh_options, {}).fetch(:port, 22)}"
run_locally do
- execute *%W(rsync -avz --delete -e "#{connection_string}" public/assets #{rsync_path})
+ execute *%W(rsync -avz -e "#{connection_string}" public/assets #{rsync_path})
end
end
end
@@ -117,10 +132,12 @@ end
namespace :app do
[:console, :dbconsole].each do |command|
+ desc "Run 'rails #{command}' on app instance"
task command do
on roles(:app, select: :primary) do |host|
user, host = [host.user, host.hostname]
- system "ssh -l #{user} #{host} -p #{fetch(:ssh_options)[:port]} -t \
+ info "Connecting via SSH to #{user}@#{host}..."
+ system "ssh -l #{user} #{host} -p #{fetch(:ssh_options, {}).fetch(:port, 22)} -t \
'cd #{current_path} && RAILS_ENV=#{fetch :rails_env} bundle exec rails #{command}'"
end
end
@@ -131,4 +148,5 @@ after 'deploy:updating', 'assets:sync'
after 'deploy:publishing', 'deploy:restart'
after 'deploy:publishing', 'resque:pool:restart'
after 'deploy:finishing', 'deploy:cleanup'
+after 'deploy:finishing', 'assets:clean'
after 'deploy:finishing', :refresh_sitemaps
diff --git a/config/deploy/production.rb b/config/deploy/production.rb
index c55b121..17fcb08 100644
--- a/config/deploy/production.rb
+++ b/config/deploy/production.rb
@@ -11,8 +11,8 @@ server '107.20.201.127', user: 'apps', roles: %w{app db web resque}, primary: tr
set :stage, :production
set :rails_env, :production
-set :hipchat_token, "d810d939a99e94c4859cbb31d0cf42"
-set :hipchat_room_name, "Deploys"
+set :hipchat_token, 'd810d939a99e94c4859cbb31d0cf42'
+set :hipchat_room_name, 'Deploys'
set :hipchat_announce, false
on roles(:all) do
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment