capistrano-exts 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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