drush-deploy 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- version 1.0.3
1
+ version 1.0.4
2
2
 
3
3
  ## DESCRIPTION
4
4
 
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'
3
+ s.version = '1.0.4'
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"]
@@ -7,6 +7,20 @@ require 'php_serialize'
7
7
  module DrushDeploy
8
8
  class Database
9
9
  class Error < DrushDeploy::Error; end
10
+ class ConfigNotFound < Error
11
+ def initialize(site_name,db_name)
12
+ super "Couldn't locate database configuration #{site_name}/#{db_name}. Please check your database configuration."
13
+ end
14
+ end
15
+ class FieldNotFound < Error
16
+ def initialize(key,site_name = 'default',db_name = 'default')
17
+ key = [key] unless key.is_a? Array
18
+ key = key.map {|k| "'#{k}'"}.join(',')
19
+
20
+ super "Couldn't find #{key} field#{key.size == 1 ? '' : 's'} in database configuration #{site_name}/#{db_name}."\
21
+ " Please check your database configuration."
22
+ end
23
+ end
10
24
 
11
25
 
12
26
  STANDARD_KEYS = %w(driver database username password host port prefix collation).map &:to_sym
@@ -146,7 +160,11 @@ module DrushDeploy
146
160
  options = (args.size>0 && args.last.is_a?(Hash)) ? args.pop : {}
147
161
  site_name = args[0] || :default
148
162
  db_name = args[1] || :default
149
- conf = databases[site_name][db_name].dup
163
+ if databases[site_name] && databases[site_name][db_name]
164
+ conf = databases[site_name][db_name].dup
165
+ else
166
+ throw ConfigNotFound.new site_name,db_name
167
+ end
150
168
  if options[:admin] && conf[:admin_username]
151
169
  conf[:username] = conf[:admin_username]
152
170
  conf[:password] = conf[:admin_password]
@@ -171,6 +189,7 @@ module DrushDeploy
171
189
  conf[:database] = db if db
172
190
  db = conf[:database]
173
191
  if @db_status[db].nil?
192
+ throw FieldNotFound.new 'database' unless conf[:database]
174
193
  logger.info "Fetching status of db #{conf[:database]}"
175
194
  sql = %q{SELECT count(*) FROM information_schema.tables
176
195
  WHERE table_schema = '%{database}' LIMIT 1} % conf
@@ -183,6 +202,7 @@ module DrushDeploy
183
202
 
184
203
  def db_versions
185
204
  conf = config(:admin => true)
205
+ throw FieldNotFound.new 'database' unless conf[:database]
186
206
  logger.info "Getting list of databases versions"
187
207
  sql = %q{SELECT SCHEMA_NAME FROM information_schema.SCHEMATA
188
208
  WHERE SCHEMA_NAME REGEXP '%{database}_[0-9]+';} % conf
@@ -192,6 +212,7 @@ module DrushDeploy
192
212
  def db_exists?(db = nil)
193
213
  conf = config(:admin => true)
194
214
  conf[:database] = db if db
215
+ throw FieldNotFound.new 'database' unless conf[:database]
195
216
  logger.info "Checking existence of #{conf[:database]}"
196
217
  sql = %q{SELECT COUNT(*) FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '%{database}';} % conf
197
218
  conf[:database] = 'information_schema'
@@ -202,6 +223,7 @@ module DrushDeploy
202
223
  conf = config(:admin => true)
203
224
  conf[:database] = db if db
204
225
  db = conf[:database]
226
+ throw FieldNotFound.new 'database' unless conf[:database]
205
227
  logger.info "Fetching table list of #{conf[:database]}"
206
228
  db_tables_query = %q{SELECT table_name FROM information_schema.tables
207
229
  WHERE table_schema = '%{database}'
@@ -280,6 +302,9 @@ module DrushDeploy
280
302
  end
281
303
 
282
304
  def self.url(db)
305
+ missing_keys = %w(driver username password host port database).delete_if {|k| db.key? k.to_sym}
306
+ throw FieldNotFound.new missing_keys unless missing_keys.empty?
307
+
283
308
  "#{db[:driver]}://#{db[:username]}:#{db[:password]}@#{db[:host]}:#{db[:port]}/#{db[:database]}"
284
309
  end
285
310
  end
@@ -2,15 +2,16 @@ require 'drush_deploy/database'
2
2
 
3
3
 
4
4
  after "deploy:update_code", "db:drupal:update_settings"
5
- after "deploy:update_code", "db:version:create"
6
- before "deploy:rollback", "db:version:rollback"
7
5
 
8
6
  if version_database
9
- before "db:version:create", "db:drupal:configure"
10
- before "db:version:rollback", "db:drupal:configure"
11
- before "db:version:cleanup", "db:drupal:configure"
7
+ after "deploy:update_code", "db:version:create"
8
+ before "deploy:rollback", "db:version:rollback"
12
9
  end
13
10
 
11
+ before "db:version:create", "db:drupal:configure"
12
+ before "db:version:rollback", "db:drupal:configure"
13
+ before "db:version:cleanup", "db:drupal:configure"
14
+
14
15
  if update_modules
15
16
  after "deploy:update_code", "db:drupal:update"
16
17
  end
@@ -9,7 +9,7 @@ set :makefile, 'distro.make'
9
9
  set :make_args, ''
10
10
  set :databases, {}
11
11
  set :update_modules, true
12
- set :version_database, nil
12
+ set :version_database, true
13
13
 
14
14
  set :scm, ENV['SCM'].to_sym if ENV['SCM']
15
15
  set :repository, ENV['REPO'] if ENV['REPO']
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.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-14 00:00:00.000000000 Z
12
+ date: 2012-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &20369920 !ruby/object:Gem::Requirement
16
+ requirement: &17765540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20369920
24
+ version_requirements: *17765540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: railsless-deploy
27
- requirement: &20369400 !ruby/object:Gem::Requirement
27
+ requirement: &17764920 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *20369400
35
+ version_requirements: *17764920
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: php_serialize
38
- requirement: &20368820 !ruby/object:Gem::Requirement
38
+ requirement: &17764340 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '1.2'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *20368820
46
+ version_requirements: *17764340
47
47
  description: Utilizes capistrano to allow for doing intellegent deployments of drupal
48
48
  projects.
49
49
  email: matt@xforty.com