capistrano-exts 1.11.3 → 1.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.todo +9 -0
- data/README.md +3 -3
- data/TODO +3 -0
- data/examples/php_fpm/deploy/development.rb +16 -0
- data/examples/php_fpm/deploy/production.rb +16 -0
- data/examples/php_fpm/deploy/staging.rb +16 -0
- data/examples/rails_passenger/deploy/development.rb +16 -0
- data/examples/rails_passenger/deploy/production.rb +16 -0
- data/examples/rails_passenger/deploy/staging.rb +16 -0
- data/examples/rails_reverse_proxy/deploy/development.rb +16 -0
- data/examples/rails_reverse_proxy/deploy/production.rb +16 -0
- data/examples/rails_reverse_proxy/deploy/staging.rb +16 -0
- data/lib/capistrano-exts.rb +1 -1
- data/lib/capistrano-exts/receipts.rb +10 -1
- data/lib/capistrano-exts/receipts/contao.rb +1 -5
- data/lib/capistrano-exts/receipts/contents.rb +2 -6
- data/lib/capistrano-exts/receipts/deploy.rb +5 -9
- data/lib/capistrano-exts/receipts/files.rb +0 -4
- data/lib/capistrano-exts/receipts/functions.rb +1 -4
- data/lib/capistrano-exts/receipts/git.rb +0 -2
- data/lib/capistrano-exts/receipts/god.rb +0 -2
- data/lib/capistrano-exts/receipts/multistage.rb +0 -2
- data/lib/capistrano-exts/receipts/mysql.rb +5 -10
- data/lib/capistrano-exts/receipts/rails.rb +0 -4
- data/lib/capistrano-exts/receipts/servers.rb +1 -3
- data/lib/capistrano-exts/receipts/servers/web_server.rb +1 -1
- data/lib/capistrano-exts/receipts/unicorn.rb +28 -21
- data/lib/capistrano-exts/receipts/web.rb +136 -0
- data/lib/capistrano-exts/servers/web_server.rb +5 -5
- data/lib/capistrano-exts/templates/maintenance/index.rhtml +26 -0
- data/lib/capistrano-exts/templates/maintenance/stylesheets/styles.css +37 -0
- data/lib/capistrano-exts/templates/multistage.rb +16 -0
- data/lib/capistrano-exts/templates/web_servers/nginx.conf.erb +25 -11
- data/lib/capistrano-exts/version.rb +2 -2
- data/spec/{requests → acceptance}/nginx_spec.rb +28 -8
- data/spec/rendered_templates/nginx_passenger.conf +24 -10
- data/spec/rendered_templates/nginx_php_fpm.conf +25 -6
- data/spec/rendered_templates/nginx_reverse_proxy_address.conf +25 -6
- data/spec/rendered_templates/nginx_reverse_proxy_socket.conf +25 -6
- metadata +23 -20
data/.todo
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
<?xml version="1.0"?>
|
2
2
|
<todo version="0.1.20">
|
3
|
+
<note priority="veryhigh" time="1316597225" done="1316600338">
|
4
|
+
Rename deploy:folders to deploy:setup:folders
|
5
|
+
<comment>
|
6
|
+
Can't be done, setup is a task
|
7
|
+
</comment>
|
8
|
+
</note>
|
3
9
|
<note priority="high" time="1316510985">
|
4
10
|
Add skip_table_on_sync configuration, if defined, we should not replace these tables on the target's database.
|
5
11
|
</note>
|
@@ -12,4 +18,7 @@
|
|
12
18
|
<note priority="medium" time="1316510880">
|
13
19
|
Add tests using Vagrant (branch vagrant)
|
14
20
|
</note>
|
21
|
+
<note priority="medium" time="1316594507">
|
22
|
+
In the nginx template file, we need to define the error pages dynamically and not in a hardcoded way.
|
23
|
+
</note>
|
15
24
|
</todo>
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ gem install capistrano-exts
|
|
18
18
|
or add it to your Gemfile
|
19
19
|
|
20
20
|
```ruby
|
21
|
-
gem 'capistrano-exts', '>=1.
|
21
|
+
gem 'capistrano-exts', '>=1.12.0', :require => false
|
22
22
|
```
|
23
23
|
|
24
24
|
# Setup
|
@@ -39,8 +39,8 @@ set :stages, [:development, :staging, :production]
|
|
39
39
|
set :default_stage, :development
|
40
40
|
|
41
41
|
# Capistrano extensions
|
42
|
-
# Valid extensions: :multistage, :git, :
|
43
|
-
set :capistrano_extensions, [:multistage, :git, :
|
42
|
+
# Valid extensions: :multistage, :git, :mysql, :rails, :contao, :contents, :god, :unicorn, :servers
|
43
|
+
set :capistrano_extensions, [:multistage, :git, :mysql, :rails, :servers]
|
44
44
|
```
|
45
45
|
|
46
46
|
Then run the command
|
data/TODO
CHANGED
@@ -9,3 +9,6 @@
|
|
9
9
|
|
10
10
|
- Add tests using Vagrant (branch vagrant)
|
11
11
|
(added Tue Sep 20 11:28:00 2011, incomplete, priority medium)
|
12
|
+
|
13
|
+
- In the nginx template file, we need to define the error pages dynamically and not in a hardcoded way.
|
14
|
+
(added Wed Sep 21 10:41:47 2011, incomplete, priority medium)
|
@@ -89,6 +89,22 @@ set :shared_items, [
|
|
89
89
|
#
|
90
90
|
#############
|
91
91
|
|
92
|
+
#############
|
93
|
+
# Maintenance
|
94
|
+
#
|
95
|
+
|
96
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
97
|
+
# it could be a single file or an entire folder. The template will be parsed
|
98
|
+
# with ERB.
|
99
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
100
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
101
|
+
# set :maintenance_path,
|
102
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
103
|
+
|
104
|
+
#
|
105
|
+
#
|
106
|
+
#############
|
107
|
+
|
92
108
|
#############
|
93
109
|
# Mysql
|
94
110
|
#
|
@@ -89,6 +89,22 @@ set :shared_items, [
|
|
89
89
|
#
|
90
90
|
#############
|
91
91
|
|
92
|
+
#############
|
93
|
+
# Maintenance
|
94
|
+
#
|
95
|
+
|
96
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
97
|
+
# it could be a single file or an entire folder. The template will be parsed
|
98
|
+
# with ERB.
|
99
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
100
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
101
|
+
# set :maintenance_path,
|
102
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
103
|
+
|
104
|
+
#
|
105
|
+
#
|
106
|
+
#############
|
107
|
+
|
92
108
|
#############
|
93
109
|
# Mysql
|
94
110
|
#
|
@@ -89,6 +89,22 @@ set :shared_items, [
|
|
89
89
|
#
|
90
90
|
#############
|
91
91
|
|
92
|
+
#############
|
93
|
+
# Maintenance
|
94
|
+
#
|
95
|
+
|
96
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
97
|
+
# it could be a single file or an entire folder. The template will be parsed
|
98
|
+
# with ERB.
|
99
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
100
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
101
|
+
# set :maintenance_path,
|
102
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
103
|
+
|
104
|
+
#
|
105
|
+
#
|
106
|
+
#############
|
107
|
+
|
92
108
|
#############
|
93
109
|
# Mysql
|
94
110
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
@@ -91,6 +91,22 @@ set :configuration_files, [
|
|
91
91
|
#
|
92
92
|
#############
|
93
93
|
|
94
|
+
#############
|
95
|
+
# Maintenance
|
96
|
+
#
|
97
|
+
|
98
|
+
# Set the maintenance path to wherever you have stored the maintenance page,
|
99
|
+
# it could be a single file or an entire folder. The template will be parsed
|
100
|
+
# with ERB.
|
101
|
+
# if it's a folder, capistrano expects an index.html file. You could provide an
|
102
|
+
# index.rhtml file and it would be parsed with ERB before uploading to the server
|
103
|
+
# set :maintenance_path,
|
104
|
+
# File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'maintenance'))
|
105
|
+
|
106
|
+
#
|
107
|
+
#
|
108
|
+
#############
|
109
|
+
|
94
110
|
#############
|
95
111
|
# Mysql
|
96
112
|
#
|
data/lib/capistrano-exts.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Add it to PATH
|
4
4
|
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
5
|
-
$: << ROOT_PATH if File.directory?(ROOT_PATH)
|
5
|
+
$: << ROOT_PATH if File.directory?(ROOT_PATH) and not $:.include?(ROOT_PATH)
|
6
6
|
|
7
7
|
# Require our core extensions
|
8
8
|
require 'capistrano-exts/core_ext'
|
@@ -1,14 +1,23 @@
|
|
1
1
|
require 'capistrano'
|
2
|
-
require 'capistrano
|
2
|
+
require 'capistrano/errors'
|
3
|
+
require 'erb'
|
4
|
+
|
3
5
|
|
4
6
|
# Verify that Capistrano is version 2
|
5
7
|
unless Capistrano::Configuration.respond_to?(:instance)
|
6
8
|
abort "This extension requires Capistrano 2"
|
7
9
|
end
|
8
10
|
|
11
|
+
DEFAULT_RECEIPTS = %w{functions deploy web files}
|
12
|
+
|
9
13
|
Capistrano::Configuration.instance(:must_exist).load do
|
10
14
|
on :load do
|
11
15
|
if exists?(:capistrano_extensions)
|
16
|
+
# Merge the requested receipts with the default receipts
|
17
|
+
capistrano_extensions = fetch(:capistrano_extensions) << DEFAULT_RECEIPTS
|
18
|
+
capistrano_extensions.flatten!.uniq!
|
19
|
+
|
20
|
+
# Require requested + default receipts
|
12
21
|
capistrano_extensions.each do |receipt|
|
13
22
|
require "capistrano-exts/receipts/#{receipt.to_s}"
|
14
23
|
end
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'capistrano'
|
2
|
-
require 'capistrano/errors'
|
3
|
-
require 'capistrano-exts/receipts/functions'
|
4
|
-
require 'capistrano-exts/receipts/deploy'
|
5
1
|
require 'capistrano-exts/receipts/mysql'
|
6
2
|
|
7
3
|
# Verify that Capistrano is version 2
|
@@ -38,7 +34,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
38
34
|
|
39
35
|
desc "[internal] Setup contao's localconfig"
|
40
36
|
task :setup_localconfig, :roles => :app, :except => { :no_release => true } do
|
41
|
-
localconfig_php_config_path = "#{fetch :shared_path}/config/
|
37
|
+
localconfig_php_config_path = "#{fetch :shared_path}/config/public_system_config_localconfig.php"
|
42
38
|
unless remote_file_exists?(localconfig_php_config_path)
|
43
39
|
on_rollback { run "rm -f #{localconfig_php_config_path}" }
|
44
40
|
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'capistrano'
|
2
|
-
require 'capistrano/errors'
|
3
|
-
require 'capistrano-exts/receipts/functions'
|
4
|
-
|
5
1
|
# Verify that Capistrano is version 2
|
6
2
|
unless Capistrano::Configuration.respond_to?(:instance)
|
7
3
|
abort "This extension requires Capistrano 2"
|
@@ -83,7 +79,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
83
79
|
export_filename_argv = ARGV.try(:[], argv_file_index)
|
84
80
|
|
85
81
|
# Generate the file name
|
86
|
-
if export_filename_argv
|
82
|
+
if export_filename_argv and not export_filename_argv =~ /.+:.+/ and not File.exists?(export_filename_argv)
|
87
83
|
export_filename = export_filename_argv
|
88
84
|
else
|
89
85
|
export_filename = random_tmp_file + ".tar.gz"
|
@@ -101,7 +97,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
101
97
|
# Find out at which index the file is located ?
|
102
98
|
argv_file_index = ARGV.index("contents:import") + 1
|
103
99
|
|
104
|
-
unless ARGV.size >= (argv_file_index + 1)
|
100
|
+
unless ARGV.size >= (argv_file_index + 1) and File.exists?(ARGV[argv_file_index])
|
105
101
|
logger.important "ERROR: please run 'cap import <gzipped tar>'"
|
106
102
|
exit 1
|
107
103
|
else
|
@@ -1,8 +1,3 @@
|
|
1
|
-
require 'capistrano'
|
2
|
-
require 'capistrano/errors'
|
3
|
-
require 'capistrano-exts/receipts/functions'
|
4
|
-
require 'capistrano-exts/receipts/files'
|
5
|
-
|
6
1
|
# Verify that Capistrano is version 2
|
7
2
|
unless Capistrano::Configuration.respond_to?(:instance)
|
8
3
|
abort "This extension requires Capistrano 2"
|
@@ -38,14 +33,15 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
38
33
|
backup_path = fetch :backup_path, "#{fetch :deploy_to}/backups"
|
39
34
|
|
40
35
|
run <<-CMD
|
41
|
-
mkdir -p #{fetch :deploy_to} &&
|
42
|
-
mkdir -p #{backup_path} &&
|
43
|
-
mkdir -p #{fetch :shared_path}/items
|
36
|
+
#{try_sudo} mkdir -p #{fetch :deploy_to} &&
|
37
|
+
#{try_sudo} mkdir -p #{backup_path} &&
|
38
|
+
#{try_sudo} mkdir -p #{fetch :shared_path}/items &&
|
39
|
+
#{try_sudo} mkdir -p #{shared_path}/__system__
|
44
40
|
CMD
|
45
41
|
|
46
42
|
if exists? :logs_path
|
47
43
|
run <<-CMD
|
48
|
-
mkdir -p #{fetch :logs_path}
|
44
|
+
#{try_sudo} mkdir -p #{fetch :logs_path}
|
49
45
|
CMD
|
50
46
|
end
|
51
47
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'capistrano'
|
2
1
|
require 'digest/sha1'
|
3
2
|
require 'highline'
|
4
3
|
|
@@ -15,8 +14,6 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
15
14
|
end
|
16
15
|
|
17
16
|
def link_file(source_file, destination_file)
|
18
|
-
p source_file
|
19
|
-
p destination_file
|
20
17
|
if remote_file_exists?(source_file)
|
21
18
|
begin
|
22
19
|
run "#{try_sudo} ln -nsf #{source_file} #{destination_file}"
|
@@ -133,7 +130,7 @@ password: #{credentials[:pass]}
|
|
133
130
|
# This function asks the user for confirmation (confirm running the task)
|
134
131
|
# If the user answers no, then the task won't be executed.
|
135
132
|
def ask_for_confirmation(what, options = {})
|
136
|
-
unless exists?(:force)
|
133
|
+
unless exists?(:force) and fetch(:force) == true
|
137
134
|
# Ask for a confirmation
|
138
135
|
response = ask(what, options)
|
139
136
|
if response =~ /(no?)|(a(bort)?|\n)/i
|
@@ -2,8 +2,6 @@
|
|
2
2
|
# https://github.com/capistrano/capistrano-ext and has been modified
|
3
3
|
# To allow configuration in either seperate files or in-line configurations
|
4
4
|
|
5
|
-
require 'capistrano'
|
6
|
-
require 'capistrano-exts/receipts/functions'
|
7
5
|
require 'fileutils'
|
8
6
|
|
9
7
|
unless Capistrano::Configuration.respond_to?(:instance)
|
@@ -1,8 +1,3 @@
|
|
1
|
-
require 'capistrano'
|
2
|
-
require 'capistrano/errors'
|
3
|
-
require 'capistrano-exts/receipts/functions'
|
4
|
-
require 'capistrano-exts/receipts/deploy'
|
5
|
-
|
6
1
|
# Verify that Capistrano is version 2
|
7
2
|
unless Capistrano::Configuration.respond_to?(:instance)
|
8
3
|
abort "This extension requires Capistrano 2"
|
@@ -160,7 +155,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
160
155
|
# Find out at which index the file is located ?
|
161
156
|
argv_file_index = ARGV.index("mysql:import_db_dump") + 1
|
162
157
|
|
163
|
-
unless ARGV.size >= (argv_file_index + 1)
|
158
|
+
unless ARGV.size >= (argv_file_index + 1) and File.exists?(ARGV[argv_file_index])
|
164
159
|
logger.important "ERROR: please run 'cap mysql:import_db_dump <sql dump>'"
|
165
160
|
exit 1
|
166
161
|
else
|
@@ -229,7 +224,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
229
224
|
export_filename_argv = ARGV.try(:[], argv_file_index)
|
230
225
|
|
231
226
|
# Generate the file name
|
232
|
-
if export_filename_argv
|
227
|
+
if export_filename_argv and not export_filename_argv =~ /.+:.+/ and not File.exists?(export_filename_argv)
|
233
228
|
export_filename = export_filename_argv
|
234
229
|
else
|
235
230
|
export_filename = random_tmp_file + ".sql"
|
@@ -320,7 +315,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
320
315
|
|
321
316
|
desc "[internal] write database #{var.gsub(/_/, ' ')}"
|
322
317
|
task "write_#{var}" do
|
323
|
-
unless exists?("mysql_#{var}_file".to_sym)
|
318
|
+
unless exists?("mysql_#{var}_file".to_sym) and remote_file_exists?(fetch "mysql_#{var}_file".to_sym)
|
324
319
|
mysql_credentials_file = fetch "mysql_#{var}_file".to_sym
|
325
320
|
credentials_formatted_content = credentials_formatted(fetch "mysql_#{var}".to_sym)
|
326
321
|
random_file = random_tmp_file(credentials_formatted_content)
|
@@ -355,7 +350,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
355
350
|
mysql_credentials_pass_regex_match = fetch "mysql_#{var}_pass_regex_match".to_sym
|
356
351
|
|
357
352
|
# We haven't got the credentials yet, look for them
|
358
|
-
if exists?("mysql_#{var}_file".to_sym)
|
353
|
+
if exists?("mysql_#{var}_file".to_sym) and remote_file_exists?(fetch "mysql_#{var}_file".to_sym)
|
359
354
|
mysql_credentials_file = fetch "mysql_#{var}_file".to_sym
|
360
355
|
|
361
356
|
begin
|
@@ -395,7 +390,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
395
390
|
end
|
396
391
|
|
397
392
|
# Finally set it so it's available and write it to the server.
|
398
|
-
if mysql_credentials[:user].present?
|
393
|
+
if mysql_credentials[:user].present? and mysql_credentials[:pass].present?
|
399
394
|
set "mysql_#{var}".to_sym, mysql_credentials
|
400
395
|
find_and_execute_task("mysql:write_#{var}")
|
401
396
|
end
|