wslave 0.0.15 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 48862b2ff0cd5f01ea03d6f886d6c18af96d686a
4
- data.tar.gz: 76d7c311c9ce2f250fd4240f0f2ddca6615f00cf
2
+ SHA256:
3
+ metadata.gz: f166ebdd86359e239e14471ae7eabe907ac34adae44529e1e420f437feee2a32
4
+ data.tar.gz: 42e606369d33accbaf8fa6a00428547b45c340d437bfb543af674dbe9e05f2bc
5
5
  SHA512:
6
- metadata.gz: 280be51d001d467b4f7d0cd9ff96b9d6b34e912734b59899267ce7226d4f34e5b6cc734bf3e33621117e653c0fb774c1de22aa3890a370a2afa4a41d633e2c83
7
- data.tar.gz: c13535a36797bff80aaa84e38f0aee547f7c4995a7ea5b1a72e2e95dee7d35aea016d8bf0b31f2eceba3989f712f245dcc809a4e384d0caa6056b6ca0359582f
6
+ metadata.gz: 7ed2dad207e47644c602cf9017c465166dd504bd054d1f0f4be37f8c455fd1177a4e455ea981f8d49c1ca6fa251b8388f2ab1f1866be1d37a2ba4c432d730d3d
7
+ data.tar.gz: 6d2333831378f71024e36f56fc960260369427c42f7b93404ff4901d8f8878310f8884815155ab9aac7e43aa41d8b33a4db7db2497e55347516c9840d6c6b31b
@@ -0,0 +1,5 @@
1
+ log
2
+ .swp
3
+ .swo
4
+ db/tmp/*
5
+ .vscode
@@ -1,4 +1,7 @@
1
1
  require 'fileutils'
2
+ require 'yaml'
3
+
4
+ @opts = YAML.load_file('config/definitions.yml')
2
5
 
3
6
  def rm_dbfile(profile)
4
7
  puts "Deleting db/#{profile}/wordpress.sql"
@@ -34,6 +37,7 @@ namespace :db do
34
37
  task :activate do
35
38
  rm_dbfile('active')
36
39
  FileUtils.cp('db/staging/wordpress.sql', 'db/active/wordpress.sql')
40
+ _replace_active_urls
37
41
  end
38
42
  end
39
43
 
@@ -42,24 +46,36 @@ namespace :db do
42
46
  task :activate do
43
47
  rm_dbfile('active')
44
48
  FileUtils.cp('db/production/wordpress.sql', 'db/active/wordpress.sql')
49
+ _replace_active_urls
45
50
  end
46
51
  end
52
+
53
+ # Converts staging and production URL entries in DB backup with localhost:8000
54
+ def _replace_active_urls()
55
+ puts 'Replacing Production and Staging URLs for local development/re-deployment...'
56
+ db_data = File.read('db/active/wordpress.sql')
57
+
58
+ if @opts['deployer']['fqdn']['staging'] != ''
59
+ db_data = db_data.gsub(/#{@opts['deployer']['fqdn']['staging']}/, 'localhost:8000')
60
+ end
61
+ if @opts['deployer']['fqdn']['production'] != ''
62
+ db_data = db_data.gsub(/#{@opts['deployer']['fqdn']['production']}/, 'localhost:8000')
63
+ end
64
+
65
+ File.open('db/active/wordpress.sql', "w") {|file| file.puts db_data }
66
+ end
47
67
  end
48
68
 
49
69
  namespace :staging do
50
70
  desc 'Open an SSH session to the staging host in the staging directory'
51
71
  task :ssh do
52
- require 'yaml'
53
- opts = YAML.load_file('config/definitions.yml')
54
- exec("ssh #{opts['deployer']['user']}@#{opts['deployer']['host']['staging']} -t \"cd #{opts['deployer']['root']}/#{opts['deployer']['fqdn']['staging']}; exec \$SHELL -l\"")
72
+ exec("ssh #{@opts['deployer']['user']}@#{@opts['deployer']['host']['staging']} -t \"cd #{@opts['deployer']['root']}/#{@opts['deployer']['fqdn']['staging']}; exec \$SHELL -l\"")
55
73
  end
56
74
  end
57
75
 
58
76
  namespace :production do
59
77
  desc 'Open an SSH session to the staging host in the production directory'
60
78
  task :ssh do
61
- require 'yaml'
62
- opts = YAML.load_file('config/definitions.yml')
63
- exec("ssh #{opts['deployer']['user']}@#{opts['deployer']['host']['production']} -t \"cd #{opts['deployer']['root']}/#{opts['deployer']['fqdn']['production']}; exec \$SHELL -l\"")
79
+ exec("ssh #{@opts['deployer']['user']}@#{@opts['deployer']['host']['production']} -t \"cd #{@opts['deployer']['root']}/#{@opts['deployer']['fqdn']['production']}; exec \$SHELL -l\"")
64
80
  end
65
81
  end
@@ -0,0 +1,11 @@
1
+ require 'erb'
2
+ require 'yaml'
3
+ require 'ostruct'
4
+
5
+ def GenerateNginxConfig(profile = 'production', out_path= './')
6
+ config_path = File.dirname(File.expand_path(File.dirname(__FILE__)))
7
+ server = {}
8
+ #server[:name] =
9
+ #server[:root] =
10
+ #server[:php_sock_path] =
11
+ end
@@ -0,0 +1,51 @@
1
+ server {
2
+ listen 80;
3
+ listen [::]:80;
4
+
5
+ server_name <%= server[:name] %>;
6
+
7
+ root <%= server[:root] %>;
8
+
9
+ access_log <%= server[:root] %>/access.log;
10
+ error_log <%= server[:root] %>/error.log;
11
+
12
+ index index.php;
13
+
14
+ location / {
15
+ rewrite ^/(wp-(admin|includes).*) /wordpress/$1 last;
16
+
17
+ rewrite ^/$ /wordpress/index.php last;
18
+
19
+ location ~ \.php {
20
+ if ($request_uri !~* "/wp-config.php") {
21
+ rewrite ^/wp-(.*)\.php$ /wordpress/wp-$1.php last;
22
+ }
23
+ rewrite ^/index\.php$ /wordpress/index.php last;
24
+ rewrite ^/wp-login\.php$ /hello.php last;
25
+ include snippets/fastcgi-php.conf;
26
+ fastcgi_pass unix:<%= server[:php_sock_path] %>;
27
+ }
28
+ }
29
+
30
+ location ~ /\. {
31
+ deny all;
32
+ access_log off;
33
+ log_not_found off;
34
+ }
35
+
36
+ location ~- \.(blade\.php)$ {
37
+ deny all;
38
+ }
39
+
40
+ location ~- composer\.(json|lock)$ {
41
+ deny all;
42
+ }
43
+
44
+ location ~- package(-lock)?\.json$ {
45
+ deny all;
46
+ }
47
+
48
+ location ~- yarn\.lock$ {
49
+ deny all;
50
+ }
51
+ }
@@ -1,5 +1,5 @@
1
1
  # config valid only for current version of Capistrano
2
- lock "3.10.0"
2
+ lock "3.14.1"
3
3
 
4
4
  require 'yaml'
5
5
  opts = YAML.load_file('config/definitions.yml')
@@ -1,13 +1,21 @@
1
1
  require 'yaml'
2
+ require 'date'
3
+ require 'wslave_sage'
2
4
 
3
5
  opts = YAML.load_file('config/definitions.yml')
4
6
  db_info = YAML.load_file('config/database.yml')
5
7
 
6
8
  deploy_user = opts['deployer']['user']
9
+ deploy_group = opts['deployer']['www_data_group']
7
10
  host_addr = opts['deployer']['host']['production']
8
11
  multisite_root = opts['deployer']['root']
9
12
  site_fqdn = opts['deployer']['fqdn']['production']
10
13
 
14
+ disable_rsync = (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
15
+ opts['options']['rsync_enabled'] == false)
16
+
17
+ set :branch, fetch(opts['deployer']['branch']['production'], 'master')
18
+
11
19
  role :web, "#{deploy_user}@#{host_addr}"
12
20
 
13
21
  set :tmp_dir, "#{multisite_root}/tmp"
@@ -72,6 +80,107 @@ namespace :deploy do
72
80
  end
73
81
  end
74
82
 
83
+ desc 'Builds and Syncs the project Sage theme'
84
+ task :sync_sage_theme do
85
+ on roles(:web) do
86
+ wss = WSlaveSage.new()
87
+ sage_theme_name = wss.theme_name?
88
+ if (sage_theme_name == '')
89
+ puts "Couldn't find a Sage theme for this project."
90
+ else
91
+ wss.production()
92
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor`
93
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist`
94
+ end
95
+ end
96
+ end
97
+
98
+ desc 'Builds and Uploads the project Sage theme'
99
+ task :upload_sage_theme do
100
+ on roles(:web) do
101
+ wss = WSlaveSage.new()
102
+ sage_theme_name = wss.theme_name?
103
+ if (sage_theme_name == '')
104
+ puts "Couldn't find a Sage theme for this project."
105
+ else
106
+ wss.production()
107
+ upload! "./public/wp-content/themes/#{sage_theme_name}/vendor", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
108
+ upload! "./public/wp-content/themes/#{sage_theme_name}/dist", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
109
+ end
110
+ end
111
+ end
112
+
113
+ desc 'Builds and Deploys the project Sage theme'
114
+ task :sage do
115
+ on roles(:web) do
116
+ if disable_rsync
117
+ invoke('deploy:upload_sage_theme')
118
+ else
119
+ invoke('deploy:sync_sage_theme')
120
+ end
121
+ end
122
+ end
123
+
124
+ desc 'Finds and replaces localhost:8000 and your Staging address with the Production address'
125
+ task :chikan do
126
+ on roles(:web) do
127
+ puts 'Replacing localhost:8000 and Production URLs with Staging URLs...'
128
+
129
+ # Set an anchor to first homogonize instances of URL's, then replace all the anchors
130
+ anchor = "URL_REPLACEMENT_ANCHOR_00000"
131
+
132
+ # Create a backup, download it, and remove remote copy
133
+ execute "mkdir -p #{deploy_path}/db/tmp"
134
+ execute "mysqldump --opt --user=#{db_info['production']['username']} --password=#{db_info['production']['password']} --host=#{db_info['production']['host']} #{db_info['production']['database']} > #{deploy_path}/db/tmp/wordpress.sql"
135
+ FileUtils.mkdir_p('./db/tmp') unless Dir.exist?('./db/tmp')
136
+ download! "#{deploy_path}/db/tmp/wordpress.sql", "db/tmp/wordpress.sql"
137
+ execute "rm #{deploy_path}/db/tmp/*.sql"
138
+
139
+ # Regex replace in file
140
+ db_data = File.read('db/tmp/wordpress.sql')
141
+
142
+ # This may seem roundabout, but in order to avoid mangling the target URL we need to first
143
+ # replace instances of it with something that won't match
144
+ db_data = db_data.gsub(/#{opts['deployer']['fqdn']['production']}/, anchor)
145
+
146
+ # Set staging URL's to the anchor
147
+ if opts['deployer']['fqdn']['staging'] != ''
148
+ db_data = db_data.gsub(/#{opts['deployer']['fqdn']['staging']}/, anchor)
149
+ end
150
+
151
+ # Set localhost entries to the anchor
152
+ db_data = db_data.gsub(/localhost\%3A8000/, anchor)
153
+ db_data = db_data.gsub(/localhost:8000/, anchor)
154
+
155
+ # Replace anchors with the correct target URL
156
+ db_data = db_data.gsub(anchor, "#{opts['deployer']['fqdn']['production']}")
157
+
158
+ # Save results
159
+ File.open('db/tmp/wordpress.sql', "w") {|file| file.puts db_data }
160
+
161
+ # Upload file and seed
162
+ upload! 'db/tmp/wordpress.sql', "#{deploy_path}/db/tmp/wordpress.sql"
163
+ execute "mysql -h#{db_info['production']['host']} -u#{db_info['production']['username']} -p#{db_info['production']['password']} #{db_info['production']['database']} < #{deploy_path}/db/tmp/wordpress.sql"
164
+ execute "rm #{deploy_path}/db/tmp/*.sql"
165
+
166
+ # Remove work file
167
+ # `rm db/tmp/wordpress.sql`
168
+ end
169
+ end
170
+
171
+ desc 'Sets ownership permissions'
172
+ task :set_permissions do
173
+ on roles(:web) do
174
+ puts 'Setting permissions'
175
+ if deploy_group != nil
176
+ puts "Recrusively setting group to #{deploy_group}..."
177
+ execute "chown -R :#{deploy_group} #{deploy_path}"
178
+ puts 'Allowing group level Write permission...'
179
+ execute "chmod -R g+w #{deploy_path}"
180
+ end
181
+ end
182
+ end
183
+
75
184
  desc 'Perform special seed tasks required on intial seed'
76
185
  task :initial do
77
186
  on roles(:web) do
@@ -79,8 +188,7 @@ namespace :deploy do
79
188
  invoke!('deploy:check:linked_dirs')
80
189
  invoke!('deploy:check:make_linked_dirs')
81
190
  invoke('deploy:wp_config')
82
- if (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
83
- opts['options']['rsync_enabled'] == false)
191
+ if disable_rsync
84
192
  invoke('deploy:upload_wp')
85
193
  invoke('deploy:upload_plugins')
86
194
  invoke('deploy:upload_uploads')
@@ -90,18 +198,22 @@ namespace :deploy do
90
198
  invoke('deploy:sync_uploads')
91
199
  end
92
200
  invoke('deploy')
201
+ invoke('sage')
93
202
  invoke('db:seed')
203
+ invoke('deploy:chikan')
204
+ invoke('deploy:set_permissions')
94
205
  end
95
206
  end
96
207
 
97
208
  desc 'Clear out remote DB tables and delete all remote files in deploy target directory'
98
209
  task :destruct do
99
210
  on roles(:web) do
100
- execute "mysqldump --opt --user=#{db_info['production']['username']} " \
211
+ execute "mysql --user=#{db_info['production']['username']} " \
212
+ "--password=#{db_info['production']['password']} --host=#{db_info['production']['host']} " \
213
+ "-Nse 'show tables' #{db_info['production']['database']} | " \
214
+ "while read table; do echo \"drop table $table;\"; done | " \
215
+ "mysql --user=#{db_info['production']['username']} " \
101
216
  "--password=#{db_info['production']['password']} --host=#{db_info['production']['host']} " \
102
- "--add-drop-table --no-data #{db_info['production']['database']} | " \
103
- "grep -e '^DROP \| FOREIGN_KEY_CHECKS' | mysql -u#{db_info['production']['username']} " \
104
- "-p#{db_info['production']['password']} -h#{db_info['production']['host']} " \
105
217
  "#{db_info['production']['database']}"
106
218
 
107
219
  execute "rm -rf #{deploy_path}/*"
@@ -147,6 +259,18 @@ namespace :data do
147
259
  download! "#{deploy_path}/shared/public/wp-content/uploads", "./public/wp-content/", recursive: true
148
260
  download! "#{deploy_path}/shared/public/wp-content/plugins", "./public/wp-content/", recursive: true
149
261
  download! "#{deploy_path}/shared/public/wp-content/upgrade", "./public/wp-content/", recursive: true
262
+ download! "#{deploy_path}/current/public/wp-content/themes", "./public/wp-content/", recursive: true
263
+ end
264
+ end
265
+
266
+ desc "Backup data with rsync"
267
+ task :sync_backup do
268
+ on roles(:web) do
269
+ puts "Syncing Backup..."
270
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/uploads/ ./public/wp-content/uploads/`
271
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/plugins/ ./public/wp-content/plugins/`
272
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/upgrade/ ./public/wp-content/upgrade/`
273
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/ ./public/wp-content/themes/`
150
274
  end
151
275
  end
152
276
  end
@@ -154,5 +278,9 @@ end
154
278
  desc 'Backup DB and remote uploads/content'
155
279
  task :backup do
156
280
  invoke('db:backup')
157
- invoke('data:backup')
281
+ if disable_rsync
282
+ invoke('data:backup')
283
+ else
284
+ invoke('data:sync_backup')
285
+ end
158
286
  end
@@ -1,13 +1,21 @@
1
1
  require 'yaml'
2
+ require 'date'
3
+ require 'wslave_sage'
2
4
 
3
5
  opts = YAML.load_file('config/definitions.yml')
4
6
  db_info = YAML.load_file('config/database.yml')
5
7
 
6
8
  deploy_user = opts['deployer']['user']
9
+ deploy_group = opts['deployer']['www_data_group']
7
10
  host_addr = opts['deployer']['host']['staging']
8
11
  multisite_root = opts['deployer']['root']
9
12
  site_fqdn = opts['deployer']['fqdn']['staging']
10
13
 
14
+ disable_rsync = (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
15
+ opts['options']['rsync_enabled'] == false)
16
+
17
+ set :branch, fetch(opts['deployer']['branch']['staging'], 'master')
18
+
11
19
  role :web, "#{deploy_user}@#{host_addr}"
12
20
 
13
21
  set :tmp_dir, "#{multisite_root}/tmp"
@@ -18,7 +26,6 @@ set :linked_files, %w{public/wp-config.php}
18
26
 
19
27
  set :deploy_to, deploy_path
20
28
 
21
-
22
29
  namespace :deploy do
23
30
  desc "Generate wp-config.php for profile"
24
31
  task :wp_config do
@@ -72,6 +79,107 @@ namespace :deploy do
72
79
  end
73
80
  end
74
81
 
82
+ desc 'Builds and Syncs the project Sage theme'
83
+ task :sync_sage_theme do
84
+ on roles(:web) do
85
+ wss = WSlaveSage.new()
86
+ sage_theme_name = wss.theme_name?
87
+ if (sage_theme_name == '')
88
+ puts "Couldn't find a Sage theme for this project."
89
+ else
90
+ wss.production()
91
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/vendor #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/vendor`
92
+ `rsync -avzPhu --delete ./public/wp-content/themes/#{sage_theme_name}/dist #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/dist`
93
+ end
94
+ end
95
+ end
96
+
97
+ desc 'Builds and Uploads the project Sage theme'
98
+ task :upload_sage_theme do
99
+ on roles(:web) do
100
+ wss = WSlaveSage.new()
101
+ sage_theme_name = wss.theme_name?
102
+ if (sage_theme_name == '')
103
+ puts "Couldn't find a Sage theme for this project."
104
+ else
105
+ wss.production()
106
+ upload! "./public/wp-content/themes/#{sage_theme_name}/vendor", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
107
+ upload! "./public/wp-content/themes/#{sage_theme_name}/dist", "#{deploy_path}/current/public/wp-content/themes/#{sage_theme_name}/", recursive: true
108
+ end
109
+ end
110
+ end
111
+
112
+ desc 'Builds and Deploys the project Sage theme'
113
+ task :sage do
114
+ on roles(:web) do
115
+ if disable_rsync
116
+ invoke('deploy:upload_sage_theme')
117
+ else
118
+ invoke('deploy:sync_sage_theme')
119
+ end
120
+ end
121
+ end
122
+
123
+ desc 'Finds and replaces localhost:8000 and your Production address with the Staging address'
124
+ task :chikan do
125
+ on roles(:web) do
126
+ puts 'Replacing localhost:8000 and Production URLs with Staging URLs...'
127
+
128
+ # Set an anchor to first homogonize instances of URL's, then replace all the anchors
129
+ anchor = "URL_REPLACEMENT_ANCHOR_00000"
130
+
131
+ # Create a backup, download it, and remove remote copy
132
+ execute "mkdir -p #{deploy_path}/db/tmp"
133
+ execute "mysqldump --opt --user=#{db_info['staging']['username']} --password=#{db_info['staging']['password']} --host=#{db_info['staging']['host']} #{db_info['staging']['database']} > #{deploy_path}/db/tmp/wordpress.sql"
134
+ FileUtils.mkdir_p('./db/tmp') unless Dir.exist?('./db/tmp')
135
+ download! "#{deploy_path}/db/tmp/wordpress.sql", "db/tmp/wordpress.sql"
136
+ execute "rm #{deploy_path}/db/tmp/*.sql"
137
+
138
+ # Regex replace in file
139
+ db_data = File.read('db/tmp/wordpress.sql')
140
+
141
+ # This may seem roundabout, but in order to avoid mangling the target URL we need to first
142
+ # replace instances of it with something that won't match
143
+ db_data = db_data.gsub(/#{opts['deployer']['fqdn']['staging']}/, anchor)
144
+
145
+ # Set production URL's to the anchor
146
+ if opts['deployer']['fqdn']['production'] != ''
147
+ db_data = db_data.gsub(/#{opts['deployer']['fqdn']['production']}/, anchor)
148
+ end
149
+
150
+ # Set localhost entries to the anchor
151
+ db_data = db_data.gsub(/localhost\%3A8000/, anchor)
152
+ db_data = db_data.gsub(/localhost:8000/, anchor)
153
+
154
+ # Replace anchors with the correct target URL
155
+ db_data = db_data.gsub(anchor, "#{opts['deployer']['fqdn']['staging']}")
156
+
157
+ # Save results
158
+ File.open('db/tmp/wordpress.sql', "w") {|file| file.puts db_data }
159
+
160
+ # Upload file and seed
161
+ upload! 'db/tmp/wordpress.sql', "#{deploy_path}/db/tmp/wordpress.sql"
162
+ execute "mysql -h#{db_info['staging']['host']} -u#{db_info['staging']['username']} -p#{db_info['staging']['password']} #{db_info['staging']['database']} < #{deploy_path}/db/tmp/wordpress.sql"
163
+ execute "rm #{deploy_path}/db/tmp/*.sql"
164
+
165
+ # Remove work file
166
+ # `rm db/tmp/wordpress.sql`
167
+ end
168
+ end
169
+
170
+ desc 'Sets ownership permissions'
171
+ task :set_permissions do
172
+ on roles(:web) do
173
+ puts 'Setting permissions'
174
+ if deploy_group != nil
175
+ puts "Recrusively setting group to #{deploy_group}..."
176
+ execute "chown -R :#{deploy_group} #{deploy_path}"
177
+ puts 'Allowing group level Write permission...'
178
+ execute "chmod -R g+w #{deploy_path}"
179
+ end
180
+ end
181
+ end
182
+
75
183
  desc 'Perform special seed tasks required on intial seed'
76
184
  task :initial do
77
185
  on roles(:web) do
@@ -79,8 +187,7 @@ namespace :deploy do
79
187
  invoke!('deploy:check:linked_dirs')
80
188
  invoke!('deploy:check:make_linked_dirs')
81
189
  invoke('deploy:wp_config')
82
- if (opts.include?('options') && opts['options'].include?('rsync_enabled') &&
83
- opts['options']['rsync_enabled'] == false)
190
+ if disable_rsync
84
191
  invoke('deploy:upload_wp')
85
192
  invoke('deploy:upload_plugins')
86
193
  invoke('deploy:upload_uploads')
@@ -90,18 +197,22 @@ namespace :deploy do
90
197
  invoke('deploy:sync_uploads')
91
198
  end
92
199
  invoke('deploy')
200
+ invoke('sage')
93
201
  invoke('db:seed')
202
+ invoke('deploy:chikan')
203
+ invoke('deploy:set_permissions')
94
204
  end
95
205
  end
96
206
 
97
207
  desc 'Clear out remote DB tables and delete all remote files in deploy target directory'
98
208
  task :destruct do
99
209
  on roles(:web) do
100
- execute "mysqldump --opt --user=#{db_info['staging']['username']} " \
210
+ execute "mysql --user=#{db_info['staging']['username']} " \
211
+ "--password=#{db_info['staging']['password']} --host=#{db_info['staging']['host']} " \
212
+ "-Nse 'show tables' #{db_info['staging']['database']} | " \
213
+ "while read table; do echo \"drop table $table;\"; done | " \
214
+ "mysql --user=#{db_info['staging']['username']} " \
101
215
  "--password=#{db_info['staging']['password']} --host=#{db_info['staging']['host']} " \
102
- "--add-drop-table --no-data #{db_info['staging']['database']} | " \
103
- "grep -e '^DROP \| FOREIGN_KEY_CHECKS' | mysql -u#{db_info['staging']['username']} " \
104
- "-p#{db_info['staging']['password']} -h#{db_info['staging']['host']} " \
105
216
  "#{db_info['staging']['database']}"
106
217
 
107
218
  execute "rm -rf #{deploy_path}/*"
@@ -147,6 +258,18 @@ namespace :data do
147
258
  download! "#{deploy_path}/shared/public/wp-content/uploads", "./public/wp-content/", recursive: true
148
259
  download! "#{deploy_path}/shared/public/wp-content/plugins", "./public/wp-content/", recursive: true
149
260
  download! "#{deploy_path}/shared/public/wp-content/upgrade", "./public/wp-content/", recursive: true
261
+ download! "#{deploy_path}/current/public/wp-content/themes", "./public/wp-content/", recursive: true
262
+ end
263
+ end
264
+
265
+ desc "Backup data with rsync"
266
+ task :sync_backup do
267
+ on roles(:web) do
268
+ puts "Syncing Backup..."
269
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/uploads/ ./public/wp-content/uploads/`
270
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/plugins/ ./public/wp-content/plugins/`
271
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/shared/public/wp-content/upgrade/ ./public/wp-content/upgrade/`
272
+ `rsync -avzPhu --delete #{deploy_user}@#{host_addr}:#{deploy_path}/current/public/wp-content/themes/ ./public/wp-content/themes/`
150
273
  end
151
274
  end
152
275
  end
@@ -154,5 +277,9 @@ end
154
277
  desc 'Backup DB and remote uploads/content'
155
278
  task :backup do
156
279
  invoke('db:backup')
157
- invoke('data:backup')
280
+ if disable_rsync
281
+ invoke('data:backup')
282
+ else
283
+ invoke('data:sync_backup')
284
+ end
158
285
  end