capistrano-exts 1.2.0 → 1.3.0

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.
@@ -1,4 +1,5 @@
1
1
  require 'capistrano'
2
+ require 'capistrano/errors'
2
3
  require 'capistrano-exts/receipts/deploy'
3
4
  require 'capistrano-exts/receipts/mysql'
4
5
 
@@ -62,7 +63,7 @@ Capistrano::Configuration.instance(:must_exist).load do
62
63
  run <<-CMD
63
64
  #{try_sudo} cp #{fetch :latest_release}/public/.htaccess.default #{fetch :shared_path}/config/htaccess.txt
64
65
  CMD
65
- rescue
66
+ rescue Capistrano::CommandError
66
67
  run <<-CMD
67
68
  #{try_sudo} touch #{fetch :shared_path}/config/htaccess.txt
68
69
  CMD
@@ -1,4 +1,5 @@
1
1
  require 'capistrano'
2
+ require 'capistrano/errors'
2
3
  require 'capistrano-exts/receipts/deploy'
3
4
 
4
5
  # Verify that Capistrano is version 2
@@ -31,7 +32,7 @@ Capistrano::Configuration.instance(:must_exist).load do
31
32
  run <<-CMD
32
33
  #{try_sudo} bzip2 -9 '#{MYSQL_DB_BACKUP_PATH}'
33
34
  CMD
34
- rescue
35
+ rescue Capistrano::CommandError
35
36
  puts "WARNING: The database doesn't exist."
36
37
  end
37
38
  else
@@ -54,7 +55,7 @@ Capistrano::Configuration.instance(:must_exist).load do
54
55
  drop --force \
55
56
  '#{mysql_db_name}'
56
57
  CMD
57
- rescue
58
+ rescue Capistrano::CommandError
58
59
  puts "WARNING: The database doesn't exist or you do not have permissions to drop it, trying to drop all tables inside of it."
59
60
  begin
60
61
  run <<-CMD
@@ -70,7 +71,7 @@ Capistrano::Configuration.instance(:must_exist).load do
70
71
  --password='#{mysql_credentials[:pass]}' \
71
72
  '#{mysql_db_name}'
72
73
  CMD
73
- rescue
74
+ rescue Capistrano::CommandError
74
75
  puts "WARNING: The database doesn't exist or you do not have permissions to drop it."
75
76
  end
76
77
  end
@@ -112,15 +113,13 @@ Capistrano::Configuration.instance(:must_exist).load do
112
113
  CMD
113
114
 
114
115
  set :mysql_credentials, {
115
- # TODO: The host is not always localhost, it should be the primary
116
- # database server
117
- host: 'localhost',
116
+ host: find_servers(:roles => :db, primary: true).first.to_s.gsub(/^(.*@)?([^:]*)(:.*)?$/, '\2'),
118
117
  user: mysql_db_user,
119
118
  pass: fetch(:mysql_db_pass),
120
119
  }
121
120
 
122
121
  find_and_execute_task("mysql:write_credentials")
123
- rescue
122
+ rescue Capistrano::CommandError
124
123
  puts "WARNING: The user #{application} already exists or you do not have permissions to create it."
125
124
  find_and_execute_task("mysql:print_credentials")
126
125
  end
@@ -141,7 +140,7 @@ Capistrano::Configuration.instance(:must_exist).load do
141
140
  --password='#{mysql_credentials[:pass]}' \
142
141
  create '#{mysql_db_name}'
143
142
  CMD
144
- rescue
143
+ rescue Capistrano::CommandError
145
144
  puts "WARNING: The database already exists or you do not have permissions to create it."
146
145
  end
147
146
  end
@@ -226,9 +225,20 @@ Capistrano::Configuration.instance(:must_exist).load do
226
225
 
227
226
  desc "[internal] write database credentials"
228
227
  task :write_credentials do
229
- mysql_credentials_file = fetch :mysql_credentials_file
230
- unless exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
231
- put mysql_credentials_formatted(fetch :mysql_credentials), mysql_credentials_file
228
+ unless exists?(:mysql_credentials_file) and remote_file_exists?(fetch :mysql_credentials_file)
229
+ mysql_credentials_file = fetch :mysql_credentials_file
230
+ random_file = random_tmp_file(mysql_credentials_formatted(fetch :mysql_credentials))
231
+ put mysql_credentials_formatted(fetch :mysql_credentials), random_file
232
+
233
+ begin
234
+ run <<-CMD
235
+ #{try_sudo} cp #{random_file} #{mysql_credentials_file}; \
236
+ #{try_sudo} rm -f #{random_file}
237
+ CMD
238
+ rescue Capistrano::CommandError
239
+ puts "WARNING: Apparently you do not have permissions to write to #{mysql_credentials_file}."
240
+ find_and_execute_task("mysql:print_credentials")
241
+ end
232
242
  else
233
243
  puts "WARNING: mysql_credentials_file is not defined in config.rb you have to manually copy the following info into a credential file and define it"
234
244
  find_and_execute_task("mysql:print_credentials")
@@ -237,14 +247,14 @@ Capistrano::Configuration.instance(:must_exist).load do
237
247
 
238
248
  desc "Get Mysql credentials"
239
249
  task :credentials, :roles => :app, :except => { :no_release => true } do
240
- mysql_credentials_file = fetch :mysql_credentials_file
241
-
242
250
  unless exists?(:mysql_credentials)
243
251
  # We haven't got the credentials yet, look for them
244
- if exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
252
+ if exists?(:mysql_credentials_file) and remote_file_exists?(fetch :mysql_credentials_file)
253
+ mysql_credentials_file = fetch :mysql_credentials_file
254
+
245
255
  begin
246
256
  set :mysql_credentials_file_contents, capture("cat #{mysql_credentials_file}")
247
- rescue
257
+ rescue Capistrano::CommandError
248
258
  set :mysql_credentials, false
249
259
  end
250
260
 
@@ -293,10 +303,20 @@ Capistrano::Configuration.instance(:must_exist).load do
293
303
 
294
304
  desc "[internal] write database root credentials"
295
305
  task :write_root_credentials do
296
- mysql_root_credentials = fetch :mysql_root_credentials
297
- mysql_root_credentials_file = fetch :mysql_root_credentials_file
298
- unless exists?(:mysql_root_credentials_file) and remote_file_exists?(mysql_root_credentials_file)
299
- put mysql_credentials_formatted(fetch :mysql_root_credentials), mysql_root_credentials_file
306
+ unless exists?(:mysql_root_credentials_file) and remote_file_exists?(fetch :mysql_root_credentials_file)
307
+ mysql_root_credentials_file = fetch :mysql_root_credentials_file
308
+ random_file = random_tmp_file(mysql_root_credentials_formatted(fetch :mysql_root_credentials))
309
+ put mysql_root_credentials_formatted(fetch :mysql_root_credentials), random_file
310
+
311
+ begin
312
+ run <<-CMD
313
+ #{try_sudo} cp #{random_file} #{mysql_root_credentials_file}; \
314
+ #{try_sudo} rm -f #{random_file}
315
+ CMD
316
+ rescue Capistrano::CommandError
317
+ puts "WARNING: Apparently you do not have permissions to write to #{mysql_root_credentials_file}."
318
+ find_and_execute_task("mysql:print_root_credentials")
319
+ end
300
320
  else
301
321
  puts "WARNING: mysql_root_credentials_file is not defined in config.rb you have to manually copy the following info into a credential file and define it"
302
322
  find_and_execute_task("mysql:print_root_credentials")
@@ -305,14 +325,14 @@ Capistrano::Configuration.instance(:must_exist).load do
305
325
 
306
326
  desc "Get Mysql root_credentials"
307
327
  task :root_credentials, :roles => :app, :except => { :no_release => true } do
308
- mysql_root_credentials_file = fetch :mysql_root_credentials_file
309
-
310
328
  unless exists?(:mysql_root_credentials)
311
329
  # We haven't got the root_credentials yet, look for them
312
- if exists?(:mysql_root_credentials_file) and remote_file_exists?(mysql_root_credentials_file)
330
+ if exists?(:mysql_root_credentials_file) and remote_file_exists?(fetch :mysql_root_credentials_file)
331
+ mysql_root_credentials_file = fetch :mysql_root_credentials_file
332
+
313
333
  begin
314
334
  set :mysql_root_credentials_file_contents, capture("cat #{mysql_root_credentials_file}")
315
- rescue
335
+ rescue Capistrano::CommandError
316
336
  set :mysql_root_credentials, false
317
337
  end
318
338
 
@@ -49,7 +49,7 @@ Capistrano::Configuration.instance(:must_exist).load do
49
49
  unencrypted_contents = Array.new
50
50
 
51
51
  web_server_auth_credentials.each do |credentials|
52
- if credentials[:password].is_a?(Proc)
52
+ if credentials[:password].respond_to?(:call)
53
53
  password = credentials[:password].call
54
54
  else
55
55
  password = credentials[:password]
@@ -71,7 +71,7 @@ Capistrano::Configuration.instance(:must_exist).load do
71
71
 
72
72
  desc "[internal] Write authentification file"
73
73
  task :write_web_server_auth_file do
74
- if exists?(:web_server_auth_file)
74
+ if exists?(:web_server_auth_file) and not remote_file_exists?(fetch :web_server_auth_file)
75
75
  web_server_auth_file = fetch :web_server_auth_file
76
76
  web_server_auth_file_contents = fetch :web_server_auth_file_contents
77
77
  web_server_auth_file_unencrypted_contents = fetch :web_server_auth_file_unencrypted_contents
@@ -84,11 +84,18 @@ Capistrano::Configuration.instance(:must_exist).load do
84
84
  put web_server_auth_file_contents, random_file
85
85
 
86
86
  run <<-CMD
87
- #{try_sudo} mv #{random_file} #{web_server_auth_file}
87
+ #{try_sudo} cp #{random_file} #{web_server_auth_file}; \
88
+ #{try_sudo} rm -f #{random_file}
88
89
  CMD
89
90
 
90
91
  # Store the unencrypted version of the contents
91
- put web_server_auth_file_unencrypted_contents, "#{fetch :deploy_to}/.http_basic_auth"
92
+ put web_server_auth_file_unencrypted_contents, random_file
93
+
94
+ run <<-CMD
95
+ #{try_sudo} cp #{random_file} #{fetch :deploy_to}/.http_basic_auth; \
96
+ #{try_sudo} rm -f #{random_file}
97
+ CMD
98
+
92
99
  puts "This site uses http basic auth, the credentials are:"
93
100
  puts web_server_auth_file_unencrypted_contents
94
101
  end
@@ -112,7 +119,8 @@ Capistrano::Configuration.instance(:must_exist).load do
112
119
  put web_conf_contents, random_file
113
120
 
114
121
  run <<-CMD
115
- #{try_sudo} mv #{random_file} #{web_conf_file}
122
+ #{try_sudo} cp #{random_file} #{web_conf_file}; \
123
+ #{try_sudo} rm -f #{random_file}
116
124
  CMD
117
125
  end
118
126
  end
@@ -2,7 +2,7 @@ module Capistrano
2
2
  module Extensions
3
3
  module Version #:nodoc:
4
4
  MAJOR = 1
5
- MINOR = 2
5
+ MINOR = 3
6
6
  TINY = 0
7
7
 
8
8
  ARRAY = [MAJOR, MINOR, TINY]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-exts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &2160791120 !ruby/object:Gem::Requirement
16
+ requirement: &2157099700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2160791120
24
+ version_requirements: *2157099700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &2160790620 !ruby/object:Gem::Requirement
27
+ requirement: &2157099200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2160790620
35
+ version_requirements: *2157099200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &2160790160 !ruby/object:Gem::Requirement
38
+ requirement: &2157098740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2160790160
46
+ version_requirements: *2157098740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard
49
- requirement: &2160789700 !ruby/object:Gem::Requirement
49
+ requirement: &2157098280 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2160789700
57
+ version_requirements: *2157098280
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-bundler
60
- requirement: &2160789240 !ruby/object:Gem::Requirement
60
+ requirement: &2157097820 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.1.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2160789240
68
+ version_requirements: *2157097820
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
- requirement: &2160788780 !ruby/object:Gem::Requirement
71
+ requirement: &2157097360 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.3
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2160788780
79
+ version_requirements: *2157097360
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &2160788320 !ruby/object:Gem::Requirement
82
+ requirement: &2157096900 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 2.6.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2160788320
90
+ version_requirements: *2157096900
91
91
  description: Handy extensions for Capistrano
92
92
  email:
93
93
  - wael.nasreddine@gmail.com