capistrano-exts 1.11.1 → 1.11.2
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.
- data/README.md +1 -1
- data/examples/php_fpm/deploy/development.rb +6 -0
- data/examples/php_fpm/deploy/production.rb +6 -0
- data/examples/php_fpm/deploy/staging.rb +6 -0
- data/examples/rails_passenger/deploy/development.rb +5 -0
- data/examples/rails_passenger/deploy/production.rb +5 -0
- data/examples/rails_passenger/deploy/staging.rb +5 -0
- data/examples/rails_reverse_proxy/deploy/development.rb +5 -0
- data/examples/rails_reverse_proxy/deploy/production.rb +5 -0
- data/examples/rails_reverse_proxy/deploy/staging.rb +5 -0
- data/lib/capistrano-exts.rb +1 -3
- data/lib/capistrano-exts/receipts/mysql.rb +69 -0
- data/lib/capistrano-exts/templates/multistage.rb +5 -0
- data/lib/capistrano-exts/version.rb +1 -1
- metadata +17 -17
data/README.md
CHANGED
@@ -103,6 +103,12 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
103
103
|
# NOTE: This is only used if you run deploy:server:setup which calls mysql:create_db_user
|
104
104
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
105
105
|
|
106
|
+
# Tables to skip on import
|
107
|
+
# set :skip_tables_on_import, [
|
108
|
+
# 'tl_formdata',
|
109
|
+
# 'tl_formdata_details',
|
110
|
+
# ]
|
111
|
+
|
106
112
|
# Where the database credentials are stored on the server ?
|
107
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
108
114
|
|
@@ -102,6 +102,12 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
102
102
|
# What is the database user ?
|
103
103
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
104
104
|
|
105
|
+
# Tables to skip on import
|
106
|
+
set :skip_tables_on_import, [
|
107
|
+
'tl_formdata',
|
108
|
+
'tl_formdata_details',
|
109
|
+
]
|
110
|
+
|
105
111
|
# Where the database credentials are stored on the server ?
|
106
112
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
107
113
|
|
@@ -102,6 +102,12 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
102
102
|
# What is the database user ?
|
103
103
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
104
104
|
|
105
|
+
# Tables to skip on import
|
106
|
+
# set :skip_tables_on_import, [
|
107
|
+
# 'tl_formdata',
|
108
|
+
# 'tl_formdata_details',
|
109
|
+
# ]
|
110
|
+
|
105
111
|
# Where the database credentials are stored on the server ?
|
106
112
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
107
113
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
@@ -104,6 +104,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
104
104
|
# What is the database user ?
|
105
105
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
106
106
|
|
107
|
+
# Tables to skip on import
|
108
|
+
# set :skip_tables_on_import, [
|
109
|
+
# 'sessions',
|
110
|
+
# ]
|
111
|
+
|
107
112
|
# Where the database credentials are stored on the server ?
|
108
113
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
109
114
|
|
data/lib/capistrano-exts.rb
CHANGED
@@ -8,9 +8,7 @@ $: << ROOT_PATH if File.directory?(ROOT_PATH) and not $:.include?(ROOT_PATH)
|
|
8
8
|
require 'capistrano-exts/core_ext'
|
9
9
|
|
10
10
|
# require Capistrano colors
|
11
|
-
require 'capistrano/configuration'
|
12
11
|
require 'capistrano/logger'
|
13
|
-
require 'capistrano_colors/configuration'
|
14
12
|
require 'capistrano_colors/logger'
|
15
13
|
|
16
14
|
# Printed credentials
|
@@ -23,7 +21,7 @@ Capistrano::Logger.add_color_matcher({ :match => /WARNING:/, :color => :yellow,
|
|
23
21
|
Capistrano::Logger.add_color_matcher({ :match => /ERROR:/, :color => :red, :level => Capistrano::Logger::IMPORTANT, :prio => -20 })
|
24
22
|
|
25
23
|
# Require requested receipts
|
26
|
-
require 'capistrano-exts/receipts'
|
24
|
+
require 'capistrano-exts/receipts' if defined?(Capistrano::Configuration)
|
27
25
|
|
28
26
|
# Require all servers
|
29
27
|
Dir["#{ROOT_PATH}/capistrano-exts/servers/*.rb"].each { |f| require f }
|
@@ -187,6 +187,9 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
187
187
|
# Create the database
|
188
188
|
find_and_execute_task("mysql:create_db")
|
189
189
|
|
190
|
+
# Backup skiped tables
|
191
|
+
find_and_execute_task "mysql:backup_skiped_tables"
|
192
|
+
|
190
193
|
run <<-CMD
|
191
194
|
mysql \
|
192
195
|
--host='#{mysql_credentials[:host]}' \
|
@@ -202,6 +205,9 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
202
205
|
rm -f '#{random_file}'
|
203
206
|
CMD
|
204
207
|
|
208
|
+
# Restore skiped tables
|
209
|
+
find_and_execute_task "mysql:restore_skiped_tables"
|
210
|
+
|
205
211
|
# Exit because capistrano will rollback, the next argument is a file name and not a task
|
206
212
|
# TODO: Find a better solution!
|
207
213
|
exit 0
|
@@ -247,6 +253,65 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
247
253
|
end
|
248
254
|
end
|
249
255
|
|
256
|
+
desc "[internal] Backup tables listed in skip_tables_on_import"
|
257
|
+
task :backup_skiped_tables, :roles => :db, :except => { :no_release => true } do
|
258
|
+
if exists?(:skip_tables_on_import)
|
259
|
+
mysql_credentials = fetch :mysql_credentials
|
260
|
+
# Generate a random file
|
261
|
+
random_file = random_tmp_file
|
262
|
+
# Set the random file so it can be accessed later
|
263
|
+
set :backuped_skiped_tables_file, random_file
|
264
|
+
# Add a rollback hook
|
265
|
+
on_rollback { run "rm -f #{random_file}" }
|
266
|
+
|
267
|
+
run <<-CMD
|
268
|
+
#{try_sudo} touch #{random_file}
|
269
|
+
CMD
|
270
|
+
|
271
|
+
fetch(:skip_tables_on_import).each do |t|
|
272
|
+
begin
|
273
|
+
run <<-CMD
|
274
|
+
#{try_sudo} mysqldump \
|
275
|
+
--host='#{mysql_credentials[:host]}'\
|
276
|
+
--user='#{mysql_credentials[:user]}' \
|
277
|
+
--password='#{mysql_credentials[:pass]}' \
|
278
|
+
--default-character-set=utf8 \
|
279
|
+
'#{mysql_db_name}' '#{t}' >> \
|
280
|
+
'#{random_file}'
|
281
|
+
CMD
|
282
|
+
rescue Capistrano::CommandError
|
283
|
+
logger.info "WARNING: It seems the database does not have the table '#{t}', skipping it."
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
desc "[internal] Restore tables listed in skip_tables_on_import"
|
290
|
+
task :restore_skiped_tables, :roles => :db, :except => { :no_release => true } do
|
291
|
+
if exists?(:skip_tables_on_import) && exists?(:backuped_skiped_tables_file)
|
292
|
+
mysql_credentials = fetch :mysql_credentials
|
293
|
+
backuped_skiped_tables_file = fetch :backuped_skiped_tables_file
|
294
|
+
|
295
|
+
begin
|
296
|
+
run <<-CMD
|
297
|
+
mysql \
|
298
|
+
--host='#{mysql_credentials[:host]}' \
|
299
|
+
--user='#{mysql_credentials[:user]}' \
|
300
|
+
--password='#{mysql_credentials[:pass]}' \
|
301
|
+
--default-character-set=utf8 \
|
302
|
+
'#{mysql_db_name}' < \
|
303
|
+
#{backuped_skiped_tables_file}
|
304
|
+
CMD
|
305
|
+
|
306
|
+
run <<-CMD
|
307
|
+
#{try_sudo} rm -f #{backuped_skiped_tables_file}
|
308
|
+
CMD
|
309
|
+
rescue
|
310
|
+
abort "ERROR: I couldn't restore the tables defined in skip_tables_on_import"
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
250
315
|
['credentials', 'root_credentials'].each do |var|
|
251
316
|
desc "print database #{var.gsub(/_/, ' ')}"
|
252
317
|
task "print_#{var}" do
|
@@ -349,4 +414,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
349
414
|
|
350
415
|
before "mysql:print_credentials", "mysql:credentials"
|
351
416
|
before "mysql:print_root_credentials", "mysql:root_credentials"
|
417
|
+
|
418
|
+
# Import_db_dump => backup/restore skiped_tables
|
419
|
+
before "mysql:backup_skiped_tables", "mysql:credentials"
|
420
|
+
before "mysql:restore_skiped_tables", "mysql:credentials"
|
352
421
|
end
|
@@ -101,6 +101,11 @@ set :mysql_db_name, -> { "#{fetch :application}_#{fetc
|
|
101
101
|
# What is the database user ?
|
102
102
|
set :mysql_db_user, -> { "#{fetch :application}" }
|
103
103
|
|
104
|
+
# Tables to skip on import
|
105
|
+
# set :skip_tables_on_import, [
|
106
|
+
# 'sessions',
|
107
|
+
# ]
|
108
|
+
|
104
109
|
# Where the database credentials are stored on the server ?
|
105
110
|
set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
|
106
111
|
|
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.11.
|
4
|
+
version: 1.11.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-09-20 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: capistrano
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156995460 !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: *2156995460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: capistrano_colors
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156994900 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.5.5
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156994900
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: i18n
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156994320 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.6.0
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156994320
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activesupport
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156993520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 3.1.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156993520
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: guard
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156992300 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.6.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156992300
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: guard-bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156991500 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.1.3
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156991500
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: guard-rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &2156990900 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 0.4.3
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *2156990900
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec
|
93
|
-
requirement: &
|
93
|
+
requirement: &2156990240 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,7 +98,7 @@ dependencies:
|
|
98
98
|
version: 2.6.0
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *2156990240
|
102
102
|
description: ! 'Capistrano exts is a set of helper tasks to help with the initial
|
103
103
|
server
|
104
104
|
|