capistrano-exts 1.1.5 → 1.2.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.
@@ -64,11 +64,11 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
# Helper for some mysql tasks
|
67
|
-
def mysql_credentials
|
67
|
+
def mysql_credentials_formatted(mysql_credentials)
|
68
68
|
return <<-EOS
|
69
|
-
hostname:
|
70
|
-
username: #{
|
71
|
-
password: #{
|
69
|
+
hostname: #{mysql_credentials[:host]}
|
70
|
+
username: #{mysql_credentials[:user]}
|
71
|
+
password: #{mysql_credentials[:pass]}
|
72
72
|
EOS
|
73
73
|
end
|
74
74
|
end
|
@@ -55,7 +55,24 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
55
55
|
'#{mysql_db_name}'
|
56
56
|
CMD
|
57
57
|
rescue
|
58
|
-
puts "WARNING: The database doesn't exist."
|
58
|
+
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
|
+
begin
|
60
|
+
run <<-CMD
|
61
|
+
mysqldump \
|
62
|
+
--host='#{mysql_credentials[:host]}' \
|
63
|
+
--user='#{mysql_credentials[:user]}' \
|
64
|
+
--password='#{mysql_credentials[:pass]}' \
|
65
|
+
--add-drop-table --no-data '#{mysql_db_name}' |\
|
66
|
+
grep '^DROP' | \
|
67
|
+
mysql \
|
68
|
+
--host='#{mysql_credentials[:host]}' \
|
69
|
+
--user='#{mysql_credentials[:user]}' \
|
70
|
+
--password='#{mysql_credentials[:pass]}' \
|
71
|
+
'#{mysql_db_name}'
|
72
|
+
CMD
|
73
|
+
rescue
|
74
|
+
puts "WARNING: The database doesn't exist or you do not have permissions to drop it."
|
75
|
+
end
|
59
76
|
end
|
60
77
|
end
|
61
78
|
end
|
@@ -94,31 +111,22 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
94
111
|
rm -f #{random_file}
|
95
112
|
CMD
|
96
113
|
|
97
|
-
|
114
|
+
set :mysql_credentials, {
|
115
|
+
# TODO: The host is not always localhost, it should be the primary
|
116
|
+
# database server
|
117
|
+
host: 'localhost',
|
118
|
+
user: mysql_db_user,
|
119
|
+
pass: fetch(:mysql_db_pass),
|
120
|
+
}
|
121
|
+
|
122
|
+
find_and_execute_task("mysql:write_credentials")
|
98
123
|
rescue
|
99
|
-
puts "WARNING: The user #{application} already exists."
|
100
|
-
find_and_execute_task("mysql:
|
124
|
+
puts "WARNING: The user #{application} already exists or you do not have permissions to create it."
|
125
|
+
find_and_execute_task("mysql:print_credentials")
|
101
126
|
end
|
102
127
|
end
|
103
128
|
end
|
104
129
|
|
105
|
-
desc "write database credentials"
|
106
|
-
task :write_db_credentials do
|
107
|
-
mysql_credentials_file = fetch :mysql_credentials_file
|
108
|
-
unless exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
|
109
|
-
put mysql_credentials, mysql_credentials_file
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
desc "print database credentials"
|
114
|
-
task :print_db_credentials do
|
115
|
-
mysql_credentials_file = fetch :mysql_credentials_file
|
116
|
-
unless exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
|
117
|
-
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"
|
118
|
-
puts mysql_credentials
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
130
|
desc "create database"
|
123
131
|
task :create_db, :roles => :db, :except => { :no_release => true } do
|
124
132
|
mysql_credentials = fetch :mysql_credentials
|
@@ -134,7 +142,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
134
142
|
create '#{mysql_db_name}'
|
135
143
|
CMD
|
136
144
|
rescue
|
137
|
-
puts "WARNING: The database already exists
|
145
|
+
puts "WARNING: The database already exists or you do not have permissions to create it."
|
138
146
|
end
|
139
147
|
end
|
140
148
|
end
|
@@ -208,6 +216,25 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
208
216
|
end
|
209
217
|
end
|
210
218
|
|
219
|
+
# TODO: credentials and root_credentials are exactly the same code with
|
220
|
+
# one variable changing, we need some meta-programming for them!!
|
221
|
+
|
222
|
+
desc "print database credentials"
|
223
|
+
task :print_credentials do
|
224
|
+
puts mysql_credentials_formatted(fetch :mysql_credentials)
|
225
|
+
end
|
226
|
+
|
227
|
+
desc "[internal] write database credentials"
|
228
|
+
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
|
232
|
+
else
|
233
|
+
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
|
+
find_and_execute_task("mysql:print_credentials")
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
211
238
|
desc "Get Mysql credentials"
|
212
239
|
task :credentials, :roles => :app, :except => { :no_release => true } do
|
213
240
|
mysql_credentials_file = fetch :mysql_credentials_file
|
@@ -230,31 +257,58 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
230
257
|
user: mysql_credentials_file_contents.match(mysql_credentials_user_regex).try(:[], mysql_credentials_user_regex_match).try(:chomp),
|
231
258
|
pass: mysql_credentials_file_contents.match(mysql_credentials_pass_regex).try(:[], mysql_credentials_pass_regex_match).try(:chomp),
|
232
259
|
}
|
233
|
-
|
234
|
-
if mysql_credentials[:user].present? and mysql_credentials[:pass].present?
|
235
|
-
set :mysql_credentials, mysql_credentials
|
236
|
-
end
|
237
260
|
end
|
238
261
|
end
|
239
262
|
end
|
240
263
|
|
241
264
|
# Verify that we got them!
|
242
|
-
if
|
243
|
-
|
244
|
-
host: ask("What is the hostname used to access the database",
|
245
|
-
|
246
|
-
|
265
|
+
if mysql_credentials.blank? or mysql_credentials[:user].blank? or mysql_credentials[:pass].blank?
|
266
|
+
mysql_credentials = {
|
267
|
+
host: ask("What is the hostname used to access the database",
|
268
|
+
default: mysql_credentials.try(:[], :host) || 'localhost',
|
269
|
+
validate: /.+/),
|
270
|
+
user: ask("What is the username used to access the database",
|
271
|
+
default: mysql_credentials.try(:[], :user),
|
272
|
+
validate: /.+/),
|
273
|
+
pass: ask("What is the password used to access the database",
|
274
|
+
default: mysql_credentials.try(:[], :pass),
|
275
|
+
validate: /.+/,
|
276
|
+
echo: false),
|
247
277
|
}
|
248
278
|
end
|
279
|
+
|
280
|
+
# Finally set it so it's available and write it to the server.
|
281
|
+
if mysql_credentials[:user].present? and mysql_credentials[:pass].present?
|
282
|
+
set :mysql_credentials, mysql_credentials
|
283
|
+
find_and_execute_task("mysql:write_credentials")
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
# REFACTOR!!
|
289
|
+
desc "print database root credentials"
|
290
|
+
task :print_root_credentials do
|
291
|
+
puts mysql_credentials_formatted(fetch :mysql_root_credentials)
|
292
|
+
end
|
293
|
+
|
294
|
+
desc "[internal] write database root credentials"
|
295
|
+
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
|
300
|
+
else
|
301
|
+
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
|
+
find_and_execute_task("mysql:print_root_credentials")
|
249
303
|
end
|
250
304
|
end
|
251
305
|
|
252
|
-
desc "Get Mysql
|
306
|
+
desc "Get Mysql root_credentials"
|
253
307
|
task :root_credentials, :roles => :app, :except => { :no_release => true } do
|
254
308
|
mysql_root_credentials_file = fetch :mysql_root_credentials_file
|
255
309
|
|
256
310
|
unless exists?(:mysql_root_credentials)
|
257
|
-
# We haven't got the
|
311
|
+
# We haven't got the root_credentials yet, look for them
|
258
312
|
if exists?(:mysql_root_credentials_file) and remote_file_exists?(mysql_root_credentials_file)
|
259
313
|
begin
|
260
314
|
set :mysql_root_credentials_file_contents, capture("cat #{mysql_root_credentials_file}")
|
@@ -264,30 +318,42 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
264
318
|
|
265
319
|
if exists?(:mysql_root_credentials_file_contents)
|
266
320
|
mysql_root_credentials_file_contents = fetch :mysql_root_credentials_file_contents
|
321
|
+
|
267
322
|
unless mysql_root_credentials_file_contents.blank?
|
268
323
|
mysql_root_credentials = {
|
269
324
|
host: mysql_root_credentials_file_contents.match(mysql_root_credentials_host_regex).try(:[], mysql_root_credentials_host_regex_match).try(:chomp),
|
270
325
|
user: mysql_root_credentials_file_contents.match(mysql_root_credentials_user_regex).try(:[], mysql_root_credentials_user_regex_match).try(:chomp),
|
271
326
|
pass: mysql_root_credentials_file_contents.match(mysql_root_credentials_pass_regex).try(:[], mysql_root_credentials_pass_regex_match).try(:chomp),
|
272
327
|
}
|
273
|
-
|
274
|
-
if mysql_root_credentials[:user].present? and mysql_root_credentials[:pass].present?
|
275
|
-
set :mysql_root_credentials, mysql_root_credentials
|
276
|
-
end
|
277
328
|
end
|
278
329
|
end
|
279
330
|
end
|
280
331
|
|
281
332
|
# Verify that we got them!
|
282
|
-
if
|
283
|
-
|
284
|
-
host: ask("What is the hostname used to access the database",
|
285
|
-
|
286
|
-
|
333
|
+
if mysql_root_credentials.blank? or mysql_root_credentials[:user].blank? or mysql_root_credentials[:pass].blank?
|
334
|
+
mysql_root_credentials = {
|
335
|
+
host: ask("What is the hostname used to access the database",
|
336
|
+
default: mysql_root_credentials.try(:[], :host) || 'localhost',
|
337
|
+
validate: /.+/),
|
338
|
+
user: ask("What is the username used to access the database",
|
339
|
+
default: mysql_root_credentials.try(:[], :user),
|
340
|
+
validate: /.+/),
|
341
|
+
pass: ask("What is the password used to access the database",
|
342
|
+
default: mysql_root_credentials.try(:[], :pass),
|
343
|
+
validate: /.+/,
|
344
|
+
echo: false),
|
287
345
|
}
|
288
346
|
end
|
347
|
+
|
348
|
+
# Finally set it so it's available and write it to the server.
|
349
|
+
if mysql_root_credentials[:user].present? and mysql_root_credentials[:pass].present?
|
350
|
+
set :mysql_root_credentials, mysql_root_credentials
|
351
|
+
find_and_execute_task("mysql:write_root_credentials")
|
352
|
+
end
|
289
353
|
end
|
290
354
|
end
|
355
|
+
# REFACTOR!!
|
356
|
+
|
291
357
|
end
|
292
358
|
|
293
359
|
before "mysql:backup_db", "mysql:credentials"
|
@@ -297,4 +363,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
297
363
|
before "mysql:export_db_dump", "mysql:backup_db"
|
298
364
|
before "mysql:create_db_user", "mysql:root_credentials"
|
299
365
|
after "mysql:create_db_user", "mysql:create_db"
|
366
|
+
|
367
|
+
before "mysql:print_credentials", "mysql:credentials"
|
368
|
+
before "mysql:print_root_credentials", "mysql:root_credentials"
|
300
369
|
end
|
@@ -94,6 +94,11 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
desc "print authentification file"
|
98
|
+
task :print_web_server_auth_file do
|
99
|
+
puts capture("cat #{fetch :deploy_to}/.http_basic_auth")
|
100
|
+
end
|
101
|
+
|
97
102
|
desc "[internal] Write web configuration file"
|
98
103
|
task :write_web_conf_file do
|
99
104
|
if exists?(:web_conf_file)
|
data/spec/spec_helper.rb
CHANGED
@@ -19,7 +19,7 @@ RSpec.configure do |config|
|
|
19
19
|
#
|
20
20
|
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
|
21
21
|
#
|
22
|
-
config.mock_with :mocha
|
22
|
+
# config.mock_with :mocha
|
23
23
|
# config.mock_with :flexmock
|
24
24
|
# config.mock_with :rr
|
25
25
|
# config.mock_with :rspec
|
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.
|
4
|
+
version: 1.2.0
|
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: 2011-09-
|
12
|
+
date: 2011-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
16
|
-
requirement: &
|
16
|
+
requirement: &2160791120 !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: *
|
24
|
+
version_requirements: *2160791120
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: i18n
|
27
|
-
requirement: &
|
27
|
+
requirement: &2160790620 !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: *
|
35
|
+
version_requirements: *2160790620
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &2160790160 !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: *
|
46
|
+
version_requirements: *2160790160
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: guard
|
49
|
-
requirement: &
|
49
|
+
requirement: &2160789700 !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: *
|
57
|
+
version_requirements: *2160789700
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard-bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &2160789240 !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: *
|
68
|
+
version_requirements: *2160789240
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard-rspec
|
71
|
-
requirement: &
|
71
|
+
requirement: &2160788780 !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: *
|
79
|
+
version_requirements: *2160788780
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &2160788320 !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: *
|
90
|
+
version_requirements: *2160788320
|
91
91
|
description: Handy extensions for Capistrano
|
92
92
|
email:
|
93
93
|
- wael.nasreddine@gmail.com
|