capistrano-ash 1.1.10 → 1.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/ash/base.rb +93 -0
  3. metadata +2 -2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.10
1
+ 1.1.11
data/lib/ash/base.rb CHANGED
@@ -69,6 +69,21 @@ configuration.load do
69
69
  # show password requests on windows
70
70
  # (http://weblog.jamisbuck.org/2007/10/14/capistrano-2-1)
71
71
  default_run_options[:pty] = true
72
+
73
+ # Database migration settings
74
+ set :db_local_host, "192.168.16.116"
75
+ set :db_local_user, "developer"
76
+ set :db_local_name, proc{text_prompt("Local database name: #{db_local_name}: ")}
77
+ set :db_local_pass, proc{text_prompt("Local database password for: #{db_local_user}: ")}
78
+ set :db_remote_user, proc{text_prompt("Remote database user: #{db_remote_user}: ")}
79
+ set :db_remote_pass, proc{text_prompt("Remote database password for: #{db_remote_user}: ")}
80
+ set :db_remote_name, proc{text_prompt("Remote database name: #{db_remote_name}: ")}
81
+ set :db_remote_host, "localhost"
82
+
83
+ # Database replacement values
84
+ # Format: local => remote
85
+ set :db_regex_hash, {
86
+ }
72
87
 
73
88
  # --------------------------------------------
74
89
  # Overloaded tasks
@@ -129,7 +144,85 @@ configuration.load do
129
144
  end
130
145
  end
131
146
  end
147
+
148
+ # --------------------------------------------
149
+ # Remote/Local database migration tasks
150
+ # --------------------------------------------
151
+ namespace :db do
152
+ desc "Migrate remote application database to local server"
153
+ task :to_local do
154
+ remote_export
155
+ remote_download
156
+ local_import
157
+ end
158
+
159
+ desc "Migrate local application database to remote server"
160
+ task :to_remote do
161
+ local_export
162
+ local_upload
163
+ remote_import
164
+ end
132
165
 
166
+ desc "Handles importing a MySQL database dump file. Uncompresses the file, does regex replacements, and imports."
167
+ task :local_import do
168
+ # check for compressed file and decompress
169
+ if local_file_exists?("#{db_remote_name}.sql.gz")
170
+ system "gunzip -f #{db_remote_name}.sql.gz"
171
+ end
172
+
173
+ if local_file_exists?("#{db_remote_name}.sql")
174
+ # run through replacements on SQL file
175
+ db_regex_hash.each_pair do |local, remote|
176
+ system "perl -pi -e 's/#{remote}/#{local}/' #{db_remote_name}.sql"
177
+ end
178
+ # import into database
179
+ system "mysql -h#{db_local_host} -u#{db_local_user} -p#{db_local_pass} #{db_local_name} < #{db_remote_name}.sql"
180
+ # remove used file
181
+ run "rm -f #{deploy_to}/#{db_remote_name}.sql.gz"
182
+ system "rm -f #{db_remote_name}.sql"
183
+ end
184
+ end
185
+
186
+ task :local_export do
187
+ system "mysqldump --opt -h#{db_local_host} -u#{db_local_user} -p#{db_local_pass} #{db_local_name} | gzip -c --best > #{db_local_name}.sql.gz"
188
+ end
189
+
190
+ desc "Upload locally created MySQL dumpfile to remote server via SCP"
191
+ task :local_upload do
192
+ upload "#{db_local_name}.sql.gz", "#{deploy_to}/#{db_local_name}.sql.gz", :via => :scp
193
+ end
194
+
195
+ desc "Handles importing a MySQL database dump file. Uncompresses the file, does regex replacements, and imports."
196
+ task :remote_import, :roles => :db do
197
+ # check for compressed file and decompress
198
+ if remote_file_exists?("#{deploy_to}/#{db_local_name}.sql.gz")
199
+ run "gunzip -f #{deploy_to}/#{db_local_name}.sql.gz"
200
+ end
201
+
202
+ if remote_file_exists?("#{deploy_to}/#{db_local_name}.sql")
203
+ # run through replacements on SQL file
204
+ db_regex_hash.each_pair do |local, remote|
205
+ run "perl -pi -e 's/#{local}/#{remote}/' #{deploy_to}/#{db_local_name}.sql"
206
+ end
207
+ # import into database
208
+ run "mysql -h#{db_remote_host} -u#{db_remote_user} -p#{db_remote_pass} #{db_remote_name} < #{deploy_to}/#{db_local_name}.sql"
209
+ # remove used file
210
+ run "rm -f #{deploy_to}/#{db_local_name}.sql"
211
+ system "rm -rf #{db_local_name}.sql.gz"
212
+ end
213
+ end
214
+
215
+ desc "Create a compressed MySQL dumpfile of the remote database"
216
+ task :remote_export, :roles => :db do
217
+ run "mysqldump --opt -h#{db_remote_host} -u#{db_remote_user} -p#{db_remote_pass} #{db_remote_name} | gzip -c --best > #{deploy_to}/#{db_remote_name}.sql.gz"
218
+ end
219
+
220
+ desc "Download remotely created MySQL dumpfile to local machine via SCP"
221
+ task :remote_download do
222
+ download "#{deploy_to}/#{db_remote_name}.sql.gz", "#{db_remote_name}.sql.gz", :via => :scp
223
+ end
224
+ end
225
+
133
226
  # --------------------------------------------
134
227
  # phpMyAdmin tasks
135
228
  # --------------------------------------------
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-ash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.10
4
+ version: 1.1.11
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: 2011-08-23 00:00:00.000000000Z
12
+ date: 2011-09-12 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: August Ash recipes for Capistrano
15
15
  email: code@augustash.com