nomagic_capistrano_recipes 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/nomagic_capistrano_recipes.rb +123 -133
- data/lib/nomagic_capistrano_recipes/version.rb +1 -1
- metadata +2 -2
@@ -2,172 +2,162 @@ require "nomagic_capistrano_recipes/version"
|
|
2
2
|
|
3
3
|
module NomagicCapistranoRecipes
|
4
4
|
|
5
|
-
Capistrano::Configuration.instance
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
desc "Dump remote database and import to local"
|
11
|
-
task :remote_database do
|
12
|
-
puts "-----------------------------------------------------------------------------------------"
|
13
|
-
puts "Importing database from #{domain} to local machine"
|
14
|
-
puts "-----------------------------------------------------------------------------------------"
|
15
|
-
|
16
|
-
get("#{shared_path}/config/database.yml", "tmp/#{stage}-database.yml")
|
17
|
-
|
18
|
-
remote_settings = YAML::load_file("tmp/#{stage}-database.yml")["#{rails_env}"]
|
19
|
-
local_settings = YAML::load_file("config/database.yml")["development"]
|
20
|
-
|
21
|
-
# Dump on remote
|
22
|
-
puts "-----------------------------------------------------------------------------------------"
|
23
|
-
puts "Dumping database on #{domain}"
|
24
|
-
puts "-----------------------------------------------------------------------------------------"
|
25
|
-
run "mysqldump -u#{remote_settings["username"]} #{"-p#{remote_settings["password"]}" if remote_settings["password"]} #{"-h#{remote_settings['host']}" if remote_settings['host']} #{remote_settings["database"]} > #{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql"
|
26
|
-
|
27
|
-
# Rsync to local
|
28
|
-
puts "-----------------------------------------------------------------------------------------"
|
29
|
-
puts "Rsyncing database from #{domain} to local"
|
30
|
-
puts "-----------------------------------------------------------------------------------------"
|
31
|
-
run_locally("rsync --times --rsh='ssh -p#{port}' --compress --human-readable --progress #{user}@#{domain}:#{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
32
|
-
|
33
|
-
# Update database on local
|
34
|
-
puts "-----------------------------------------------------------------------------------------"
|
35
|
-
puts "Updating database on local"
|
36
|
-
puts "-----------------------------------------------------------------------------------------"
|
37
|
-
run_locally("mysql -u#{local_settings["username"]} #{"-p#{local_settings["password"]}" if local_settings["password"]} #{"-h#{local_settings['host']}" if local_settings['host']} #{local_settings["database"]} < tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
38
|
-
|
39
|
-
# Remove temporary files
|
40
|
-
puts "-----------------------------------------------------------------------------------------"
|
41
|
-
puts "Removing temporary files"
|
42
|
-
puts "-----------------------------------------------------------------------------------------"
|
43
|
-
run "rm #{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql"
|
44
|
-
run_locally("rm tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
45
|
-
run_locally("rm tmp/#{stage}-database.yml")
|
46
|
-
end
|
47
|
-
|
48
|
-
desc "Download remote (system) assets to local machine"
|
49
|
-
task :remote_assets do
|
50
|
-
puts "-----------------------------------------------------------------------------------------"
|
51
|
-
puts "Importing assets from #{domain} to local machine"
|
52
|
-
puts "-----------------------------------------------------------------------------------------"
|
53
|
-
system "rsync --recursive --times --rsh='ssh -p#{port}' --delete --compress --human-readable --progress #{user}@#{domain}:#{shared_path}/system/ public/system/"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
namespace :export do
|
58
|
-
desc "Dump local database and export to remote"
|
59
|
-
task :local_database do
|
60
|
-
if enable_local_db_export
|
61
|
-
|
62
|
-
# Confirm that we really want to override the database
|
5
|
+
if Capistrano::Configuration.instance
|
6
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
7
|
+
namespace :import do
|
8
|
+
desc "Dump remote database and import to local"
|
9
|
+
task :remote_database do
|
63
10
|
puts "-----------------------------------------------------------------------------------------"
|
64
|
-
puts "
|
11
|
+
puts "Importing database from #{domain} to local machine"
|
65
12
|
puts "-----------------------------------------------------------------------------------------"
|
66
|
-
set :continue, Proc.new { Capistrano::CLI.ui.ask(' continue (y/n): ') }
|
67
|
-
abort "Export to #{stage} was stopped" unless continue == 'y'
|
68
13
|
|
69
|
-
# If stage is production - double check that we want to do this
|
70
|
-
if "#{stage}" == 'production'
|
71
|
-
puts "-----------------------------------------------------------------------------------------"
|
72
|
-
puts "WARNING: You are overriding the PRODUCTION database, are you COMPLETELY sure?"
|
73
|
-
puts "-----------------------------------------------------------------------------------------"
|
74
|
-
set :continue, Proc.new { Capistrano::CLI.ui.ask('continue (y/n): ') }
|
75
|
-
abort "Export to production was stopped" unless continue == 'y'
|
76
|
-
end
|
77
|
-
|
78
|
-
puts "-----------------------------------------------------------------------------------------"
|
79
|
-
puts "Exporting database from local machine to #{domain}"
|
80
|
-
puts "-----------------------------------------------------------------------------------------"
|
81
|
-
|
82
14
|
get("#{shared_path}/config/database.yml", "tmp/#{stage}-database.yml")
|
83
|
-
|
15
|
+
|
84
16
|
remote_settings = YAML::load_file("tmp/#{stage}-database.yml")["#{rails_env}"]
|
85
17
|
local_settings = YAML::load_file("config/database.yml")["development"]
|
86
18
|
|
87
|
-
# Dump local database
|
88
19
|
puts "-----------------------------------------------------------------------------------------"
|
89
|
-
puts "Dumping
|
20
|
+
puts "Dumping database on #{domain}"
|
90
21
|
puts "-----------------------------------------------------------------------------------------"
|
91
|
-
|
22
|
+
run "mysqldump -u#{remote_settings["username"]} #{"-p#{remote_settings["password"]}" if remote_settings["password"]} #{"-h#{remote_settings['host']}" if remote_settings['host']} #{remote_settings["database"]} > #{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql"
|
92
23
|
|
93
|
-
# Rsync to remote
|
94
24
|
puts "-----------------------------------------------------------------------------------------"
|
95
|
-
puts "Rsyncing database from
|
25
|
+
puts "Rsyncing database from #{domain} to local"
|
96
26
|
puts "-----------------------------------------------------------------------------------------"
|
97
|
-
run_locally("rsync --times --rsh='ssh -p#{port}' --compress --human-readable --progress tmp
|
27
|
+
run_locally("rsync --times --rsh='ssh -p#{port}' --compress --human-readable --progress #{user}@#{domain}:#{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
98
28
|
|
99
|
-
# Update database on remote
|
100
29
|
puts "-----------------------------------------------------------------------------------------"
|
101
|
-
puts "Updating database on
|
30
|
+
puts "Updating database on local"
|
102
31
|
puts "-----------------------------------------------------------------------------------------"
|
103
|
-
|
104
|
-
|
105
|
-
# Remove temporary files
|
32
|
+
run_locally("mysql -u#{local_settings["username"]} #{"-p#{local_settings["password"]}" if local_settings["password"]} #{"-h#{local_settings['host']}" if local_settings['host']} #{local_settings["database"]} < tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
33
|
+
|
106
34
|
puts "-----------------------------------------------------------------------------------------"
|
107
35
|
puts "Removing temporary files"
|
108
36
|
puts "-----------------------------------------------------------------------------------------"
|
109
|
-
|
37
|
+
run "rm #{shared_path}/tmp/#{stage}-#{remote_settings["database"]}-dump.sql"
|
38
|
+
run_locally("rm tmp/#{stage}-#{remote_settings["database"]}-dump.sql")
|
110
39
|
run_locally("rm tmp/#{stage}-database.yml")
|
111
|
-
|
112
|
-
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "Download remote (system) assets to local machine"
|
43
|
+
task :remote_assets do
|
113
44
|
puts "-----------------------------------------------------------------------------------------"
|
114
|
-
puts "
|
45
|
+
puts "Importing assets from #{domain} to local machine"
|
115
46
|
puts "-----------------------------------------------------------------------------------------"
|
47
|
+
system "rsync --recursive --times --rsh='ssh -p#{port}' --delete --compress --human-readable --progress #{user}@#{domain}:#{shared_path}/system/ public/system/"
|
116
48
|
end
|
117
49
|
end
|
118
50
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
51
|
+
namespace :export do
|
52
|
+
set :enable_local_db_export, false
|
53
|
+
set :enable_local_asset_export, false
|
54
|
+
|
55
|
+
desc "Dump local database and export to remote"
|
56
|
+
task :local_database do
|
57
|
+
if enable_local_db_export
|
58
|
+
|
59
|
+
puts "-----------------------------------------------------------------------------------------"
|
60
|
+
puts "Do you really want to override #{stage} database with your local version?"
|
61
|
+
puts "-----------------------------------------------------------------------------------------"
|
62
|
+
set :continue, Proc.new { Capistrano::CLI.ui.ask(' continue (y/n): ') }
|
63
|
+
abort "Export to #{stage} was stopped" unless continue == 'y'
|
64
|
+
|
65
|
+
if "#{stage}" == 'production'
|
66
|
+
puts "-----------------------------------------------------------------------------------------"
|
67
|
+
puts "WARNING: You are overriding the PRODUCTION database, are you COMPLETELY sure?"
|
68
|
+
puts "-----------------------------------------------------------------------------------------"
|
69
|
+
set :continue, Proc.new { Capistrano::CLI.ui.ask('continue (y/n): ') }
|
70
|
+
abort "Export to production was stopped" unless continue == 'y'
|
71
|
+
end
|
72
|
+
|
73
|
+
puts "-----------------------------------------------------------------------------------------"
|
74
|
+
puts "Exporting database from local machine to #{domain}"
|
75
|
+
puts "-----------------------------------------------------------------------------------------"
|
76
|
+
|
77
|
+
get("#{shared_path}/config/database.yml", "tmp/#{stage}-database.yml")
|
78
|
+
|
79
|
+
remote_settings = YAML::load_file("tmp/#{stage}-database.yml")["#{rails_env}"]
|
80
|
+
local_settings = YAML::load_file("config/database.yml")["development"]
|
81
|
+
|
82
|
+
puts "-----------------------------------------------------------------------------------------"
|
83
|
+
puts "Dumping local database"
|
84
|
+
puts "-----------------------------------------------------------------------------------------"
|
85
|
+
run_locally("mysqldump -u#{local_settings['username']} #{"-p#{local_settings['password']}" if local_settings['password']} #{"-h#{local_settings['host']}" if local_settings['host']} #{local_settings['database']} > tmp/local-#{local_settings['database']}-dump.sql")
|
86
|
+
|
87
|
+
puts "-----------------------------------------------------------------------------------------"
|
88
|
+
puts "Rsyncing database from local to #{domain}"
|
89
|
+
puts "-----------------------------------------------------------------------------------------"
|
90
|
+
run_locally("rsync --times --rsh='ssh -p#{port}' --compress --human-readable --progress tmp/local-#{local_settings["database"]}-dump.sql #{user}@#{domain}:#{shared_path}/tmp/local-#{local_settings["database"]}-dump.sql")
|
91
|
+
|
92
|
+
puts "-----------------------------------------------------------------------------------------"
|
93
|
+
puts "Updating database on #{domain}"
|
94
|
+
puts "-----------------------------------------------------------------------------------------"
|
95
|
+
run "mysql -u#{remote_settings['username']} #{"-p#{remote_settings['password']}" if remote_settings['password']} #{"-h#{remote_settings['host']}" if remote_settings['host']} #{remote_settings["database"]} < #{shared_path}/tmp/local-#{local_settings["database"]}-dump.sql"
|
128
96
|
|
129
|
-
# If stage is production - double check that we want to do this
|
130
|
-
if "#{stage}" == 'production'
|
131
97
|
puts "-----------------------------------------------------------------------------------------"
|
132
|
-
puts "
|
98
|
+
puts "Removing temporary files"
|
99
|
+
puts "-----------------------------------------------------------------------------------------"
|
100
|
+
run_locally("rm tmp/local-#{local_settings["database"]}-dump.sql")
|
101
|
+
run_locally("rm tmp/#{stage}-database.yml")
|
102
|
+
run "rm #{shared_path}/tmp/local-#{local_settings["database"]}-dump.sql"
|
103
|
+
else
|
104
|
+
puts "-----------------------------------------------------------------------------------------"
|
105
|
+
puts "NOTE: exporting your local database to #{stage} is disabled"
|
133
106
|
puts "-----------------------------------------------------------------------------------------"
|
134
|
-
set :continue, Proc.new { Capistrano::CLI.ui.ask('continue (y/n): ') }
|
135
|
-
abort "Export to production was stopped" unless continue == 'y'
|
136
107
|
end
|
108
|
+
end
|
137
109
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
110
|
+
desc "Downloads remote (system) assets to the local development machine"
|
111
|
+
task :local_assets do
|
112
|
+
if enable_local_asset_export
|
113
|
+
puts "-----------------------------------------------------------------------------------------"
|
114
|
+
puts "Do you really want to upload local assets to #{stage} at #{domain}?"
|
115
|
+
puts "-----------------------------------------------------------------------------------------"
|
116
|
+
set :continue, Proc.new { Capistrano::CLI.ui.ask(' continue (y/n): ') }
|
117
|
+
abort "Export to #{stage} was stopped" unless continue == 'y'
|
118
|
+
|
119
|
+
if "#{stage}" == 'production'
|
120
|
+
puts "-----------------------------------------------------------------------------------------"
|
121
|
+
puts "WARNING: You are overriding the PRODUCTION assets, are you COMPLETELY sure?"
|
122
|
+
puts "-----------------------------------------------------------------------------------------"
|
123
|
+
set :continue, Proc.new { Capistrano::CLI.ui.ask('continue (y/n): ') }
|
124
|
+
abort "Export to production was stopped" unless continue == 'y'
|
125
|
+
end
|
126
|
+
|
127
|
+
puts "-----------------------------------------------------------------------------------------"
|
128
|
+
puts "Exporting assets from local machine to #{domain}"
|
129
|
+
puts "-----------------------------------------------------------------------------------------"
|
130
|
+
system "rsync --recursive --times --rsh='ssh -p#{port}' --delete --compress --human-readable --progress public/system/ #{user}@#{domain}:#{shared_path}/system/"
|
131
|
+
else
|
132
|
+
puts "-----------------------------------------------------------------------------------------"
|
133
|
+
puts "NOTE: exporting your local assets to #{stage} is disabled"
|
134
|
+
puts "-----------------------------------------------------------------------------------------"
|
135
|
+
end
|
146
136
|
end
|
147
137
|
end
|
148
|
-
end
|
149
138
|
|
150
|
-
|
151
|
-
|
152
|
-
|
139
|
+
namespace :unicorn do
|
140
|
+
set(:unicorn_conf) { "#{deploy_to}/#{shared_dir}/config/unicorn.rb" }
|
141
|
+
set(:unicorn_pid) { "#{deploy_to}/#{shared_dir}/pids/unicorn.pid" }
|
153
142
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
143
|
+
task :restart do
|
144
|
+
puts "-----------------------------------------------------------------------------------------"
|
145
|
+
puts "Restarting unicorn"
|
146
|
+
puts "-----------------------------------------------------------------------------------------"
|
147
|
+
run "if [ -f #{unicorn_pid} ] && [ -e /proc/$(cat #{unicorn_pid}) ]; then kill -USR2 `cat #{unicorn_pid}`; else cd #{deploy_to}/current && bundle exec unicorn -c #{unicorn_conf} -E #{rails_env} -D; fi"
|
148
|
+
end
|
149
|
+
task :start do
|
150
|
+
puts "-----------------------------------------------------------------------------------------"
|
151
|
+
puts "Starting unicorn"
|
152
|
+
puts "-----------------------------------------------------------------------------------------"
|
153
|
+
run "cd #{deploy_to}/current && bundle exec unicorn -c #{unicorn_conf} -E #{rails_env} -D"
|
154
|
+
end
|
155
|
+
task :stop do
|
156
|
+
puts "-----------------------------------------------------------------------------------------"
|
157
|
+
puts "Stopping unicorn"
|
158
|
+
puts "-----------------------------------------------------------------------------------------"
|
159
|
+
run "if [ -f #{unicorn_pid} ] && [ -e /proc/$(cat #{unicorn_pid}) ]; then kill -QUIT `cat #{unicorn_pid}`; fi"
|
160
|
+
end
|
171
161
|
end
|
172
162
|
end
|
173
163
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nomagic_capistrano_recipes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Useful capistrano recipes
|
15
15
|
email:
|