drush-deploy 1.0.10 → 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/drush-deploy.gemspec +1 -1
- data/lib/drush_deploy/database.rb +22 -21
- data/lib/drush_deploy/recipes/db.rb +25 -16
- data/lib/drush_deploy/recipes/drupal.rb +2 -6
- data/lib/drush_deploy/recipes/setup.rb +2 -0
- metadata +2 -2
data/README.md
CHANGED
data/drush-deploy.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'drush-deploy'
|
3
|
-
s.version = '1.0.
|
3
|
+
s.version = '1.0.11'
|
4
4
|
s.summary = "Deployment strategy for Drupal using Drush"
|
5
5
|
s.description = "Utilizes capistrano to allow for doing intellegent deployments of drupal projects."
|
6
6
|
s.authors = ["Matt Edlefsen"]
|
@@ -158,12 +158,12 @@ module DrushDeploy
|
|
158
158
|
|
159
159
|
def config(*args)
|
160
160
|
options = (args.size>0 && args.last.is_a?(Hash)) ? args.pop : {}
|
161
|
-
|
162
|
-
|
163
|
-
if databases[
|
164
|
-
conf = databases[
|
161
|
+
db_name = args[0] || :default
|
162
|
+
instance_name = args[1] || :default
|
163
|
+
if databases[db_name] && databases[db_name][instance_name]
|
164
|
+
conf = databases[db_name][instance_name].dup
|
165
165
|
else
|
166
|
-
throw ConfigNotFound.new
|
166
|
+
throw ConfigNotFound.new db_name,instance_name
|
167
167
|
end
|
168
168
|
if options[:admin] && conf[:admin_username]
|
169
169
|
conf[:username] = conf[:admin_username]
|
@@ -184,8 +184,8 @@ module DrushDeploy
|
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
187
|
-
def db_empty?(db = nil)
|
188
|
-
conf = config
|
187
|
+
def db_empty?(db = nil, conf_name = nil)
|
188
|
+
conf = config(conf_name)
|
189
189
|
conf[:database] = db if db
|
190
190
|
db = conf[:database]
|
191
191
|
if @db_status[db].nil?
|
@@ -200,8 +200,9 @@ module DrushDeploy
|
|
200
200
|
@db_status[db]
|
201
201
|
end
|
202
202
|
|
203
|
-
def db_versions
|
204
|
-
conf = config(
|
203
|
+
def db_versions(db = nil, conf_name = nil)
|
204
|
+
conf = config(conf_name,:admin => true)
|
205
|
+
conf[:database] = db if db
|
205
206
|
throw FieldNotFound.new 'database' unless conf[:database]
|
206
207
|
logger.info "Getting list of databases versions"
|
207
208
|
sql = %q{SELECT SCHEMA_NAME FROM information_schema.SCHEMATA
|
@@ -209,8 +210,8 @@ module DrushDeploy
|
|
209
210
|
(remote_sql(sql, :config => conf, :capture => true).split(/\n/)[1..-1] || []).sort.reverse
|
210
211
|
end
|
211
212
|
|
212
|
-
def db_exists?(db = nil)
|
213
|
-
conf = config(
|
213
|
+
def db_exists?(db = nil, conf_name = nil)
|
214
|
+
conf = config(conf_name,:admin => true)
|
214
215
|
conf[:database] = db if db
|
215
216
|
throw FieldNotFound.new 'database' unless conf[:database]
|
216
217
|
logger.info "Checking existence of #{conf[:database]}"
|
@@ -219,8 +220,8 @@ module DrushDeploy
|
|
219
220
|
remote_sql(sql, :config => conf, :capture => true).split(/\n/)[1].to_i != 0
|
220
221
|
end
|
221
222
|
|
222
|
-
def db_tables(db = nil)
|
223
|
-
conf = config(
|
223
|
+
def db_tables(db = nil, conf_name = nil)
|
224
|
+
conf = config(conf_name,:admin => true)
|
224
225
|
conf[:database] = db if db
|
225
226
|
db = conf[:database]
|
226
227
|
throw FieldNotFound.new 'database' unless conf[:database]
|
@@ -235,10 +236,10 @@ module DrushDeploy
|
|
235
236
|
tables
|
236
237
|
end
|
237
238
|
|
238
|
-
def copy_database(from,to)
|
239
|
+
def copy_database(from,to,conf_name = nil)
|
239
240
|
logger.info "Copying database #{from} to #{to}"
|
240
|
-
tables = db_tables
|
241
|
-
conf = config(
|
241
|
+
tables = db_tables(nil,conf_name)
|
242
|
+
conf = config(conf_name,:database => from, :admin => true)
|
242
243
|
|
243
244
|
remote_sql("CREATE DATABASE #{to};", :config => conf)
|
244
245
|
sql = ''
|
@@ -252,13 +253,13 @@ module DrushDeploy
|
|
252
253
|
@db_status.delete(to)
|
253
254
|
end
|
254
255
|
|
255
|
-
def rename_database(from,to)
|
256
|
+
def rename_database(from,to,conf_name = nil)
|
256
257
|
logger.info "Renaming database #{from} to #{to}"
|
257
|
-
conf = config(
|
258
|
+
conf = config(conf_name,:database => from, :admin => true)
|
258
259
|
sql = ''
|
259
260
|
if conf[:driver] == :mysql
|
260
261
|
sql += "CREATE DATABASE `#{to}`;"
|
261
|
-
db_tables(from).each do |table|
|
262
|
+
db_tables(from,conf_name).each do |table|
|
262
263
|
sql += "RENAME TABLE `#{from}`.`#{table}` TO `#{to}`.`#{table}`;"
|
263
264
|
end
|
264
265
|
sql += "DROP DATABASE `#{from}`;"
|
@@ -269,9 +270,9 @@ module DrushDeploy
|
|
269
270
|
@db_status.delete(to)
|
270
271
|
end
|
271
272
|
|
272
|
-
def drop_database(db)
|
273
|
+
def drop_database(db,conf_name = nil)
|
273
274
|
logger.info "Dropping database #{db}"
|
274
|
-
conf = config(
|
275
|
+
conf = config(conf_name,:database => db, :admin => true)
|
275
276
|
remote_sql("DROP DATABASE #{db};", :config => conf)
|
276
277
|
@db_status[db] = false
|
277
278
|
end
|
@@ -71,13 +71,16 @@ namespace :db do
|
|
71
71
|
desc "Create a versioned backup of the database"
|
72
72
|
task :create, :roles => :web do
|
73
73
|
if releases.size > 1
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
74
|
+
versioned_databases.each do |conf_name|
|
75
|
+
current = drupal_db.config(conf_name)[:database]
|
76
|
+
backup = "#{current}_#{releases[-2]}"
|
77
|
+
unless drupal_db.db_empty?(current,conf_name) or drupal_db.db_exists? backup,conf_name
|
78
|
+
on_rollback do
|
79
|
+
drupal_db.drop_database backup, conf_name
|
80
|
+
end
|
81
|
+
logger.info "Creating backup version of #{conf_name} database as #{backup}"
|
82
|
+
drupal_db.copy_database(current,backup,conf_name)
|
79
83
|
end
|
80
|
-
drupal_db.copy_database(current,backup)
|
81
84
|
end
|
82
85
|
end
|
83
86
|
end
|
@@ -87,14 +90,17 @@ namespace :db do
|
|
87
90
|
unless releases.size > 1
|
88
91
|
throw DrushDeploy::Error.new "No previous versions to rollback to"
|
89
92
|
end
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
drupal_db.
|
96
|
-
|
97
|
-
|
93
|
+
versioned_databases.each do |conf_name|
|
94
|
+
current = drupal_db.config(conf_name)[:database]
|
95
|
+
release = releases.last
|
96
|
+
source = "#{current}_#{releases[-2]}"
|
97
|
+
backup = "#{current}_backup"
|
98
|
+
if drupal_db.db_exists? source,conf_name
|
99
|
+
logger.info "Rolling back #{conf_name} database to #{source}"
|
100
|
+
drupal_db.rename_database(current,backup,conf_name)
|
101
|
+
drupal_db.rename_database(source,current,conf_name)
|
102
|
+
drupal_db.drop_database(backup,conf_name)
|
103
|
+
end
|
98
104
|
end
|
99
105
|
end
|
100
106
|
|
@@ -102,8 +108,11 @@ namespace :db do
|
|
102
108
|
task :cleanup, :roles => :web do
|
103
109
|
# Subtract one because the latest release won't be counted
|
104
110
|
count = fetch(:keep_releases, 5).to_i - 1
|
105
|
-
|
106
|
-
|
111
|
+
versioned_databases.each do |conf_name|
|
112
|
+
logger.info "Cleaning up #{conf_name} database"
|
113
|
+
drupal_db.db_versions(nil,conf_name).drop(count).each do |db|
|
114
|
+
drupal_db.drop_database(db,conf_name)
|
115
|
+
end
|
107
116
|
end
|
108
117
|
end
|
109
118
|
end
|
@@ -2,14 +2,10 @@ require 'drush_deploy/database'
|
|
2
2
|
|
3
3
|
on :start, "drupal:load_targets"
|
4
4
|
before "deploy", "drupal:setup_build"
|
5
|
-
|
5
|
+
after "deploy:update_code", "drupal:symlink"
|
6
6
|
before "deploy:setup", "drupal:setup"
|
7
7
|
after "drupal:setup", "drupal:check_permissions"
|
8
|
-
|
9
|
-
after "db:version:create", "drupal:clearcache"
|
10
|
-
else
|
11
|
-
after "deploy:update_code", "drupal:clearcache"
|
12
|
-
end
|
8
|
+
before "deploy:symlink", "drupal:clearcache"
|
13
9
|
before "drupal:install_profile", "db:drupal:configure"
|
14
10
|
|
15
11
|
namespace :drupal do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drush-deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.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: 2012-
|
12
|
+
date: 2012-08-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|