capistrano 2.5.14 → 2.5.15
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/{CHANGELOG.rdoc → CHANGELOG} +8 -0
- data/{README.rdoc → README} +0 -0
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/capistrano/cli/execute.rb +1 -0
- data/lib/capistrano/cli/options.rb +5 -1
- data/lib/capistrano/configuration.rb +2 -1
- data/lib/capistrano/configuration/servers.rb +4 -2
- data/lib/capistrano/recipes/deploy.rb +1 -2
- data/lib/capistrano/version.rb +8 -11
- data/test/cli/execute_test.rb +2 -2
- data/test/cli/options_test.rb +12 -0
- data/test/configuration/actions/invocation_test.rb +1 -0
- data/test/configuration/servers_test.rb +30 -1
- metadata +6 -8
- data/TESTING.md +0 -16
- data/lib/capistrano/recipes/upgrade.rb +0 -33
@@ -1,3 +1,11 @@
|
|
1
|
+
== 2.5.15 / 14 Febuary 2010
|
2
|
+
|
3
|
+
Fixes a feature request not to overwrite roles when using the ROLES environmental variable.
|
4
|
+
|
5
|
+
* #126 - The option to not overwriting the roles which are defined in the task definition.
|
6
|
+
* Removed the `upgrade` file as it has been a couple of years since 1.x was in the wild.
|
7
|
+
* Slight internal re-factor of the way we calculate the `version`
|
8
|
+
|
1
9
|
== 2.5.14 / 18 January 2010
|
2
10
|
|
3
11
|
Fixes a low-value bug, thanks to Chris G for the well submitted patch:
|
data/{README.rdoc → README}
RENAMED
File without changes
|
data/Rakefile
CHANGED
@@ -5,6 +5,7 @@ begin
|
|
5
5
|
Jeweler::Tasks.new do |gem|
|
6
6
|
gem.version
|
7
7
|
gem.name = "capistrano"
|
8
|
+
gem.executables = %W(capify cap)
|
8
9
|
gem.summary = %Q{Capistrano – Welcome to easy deployment with Ruby over SSH}
|
9
10
|
gem.description = %Q{Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.}
|
10
11
|
gem.homepage = "http://github.com/capistrano/capistrano"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.5.
|
1
|
+
2.5.15
|
@@ -79,6 +79,10 @@ module Capistrano
|
|
79
79
|
"Make the output as quiet as possible."
|
80
80
|
) { options[:verbose] = 0 }
|
81
81
|
|
82
|
+
opts.on("-r", "--preserve-roles",
|
83
|
+
"Preserve task roles"
|
84
|
+
) { options[:preserve_roles] = true }
|
85
|
+
|
82
86
|
opts.on("-S", "--set-before NAME=VALUE",
|
83
87
|
"Set a variable before the recipes are loaded."
|
84
88
|
) do |pair|
|
@@ -112,7 +116,7 @@ module Capistrano
|
|
112
116
|
"Display the Capistrano version, and exit."
|
113
117
|
) do
|
114
118
|
require 'capistrano/version'
|
115
|
-
puts "Capistrano v#{Capistrano::Version
|
119
|
+
puts "Capistrano v#{Capistrano::Version}"
|
116
120
|
exit
|
117
121
|
end
|
118
122
|
|
@@ -19,11 +19,12 @@ module Capistrano
|
|
19
19
|
# define roles, and set configuration variables.
|
20
20
|
class Configuration
|
21
21
|
# The logger instance defined for this configuration.
|
22
|
-
attr_accessor :debug, :logger, :dry_run
|
22
|
+
attr_accessor :debug, :logger, :dry_run, :preserve_roles
|
23
23
|
|
24
24
|
def initialize(options={}) #:nodoc:
|
25
25
|
@debug = false
|
26
26
|
@dry_run = false
|
27
|
+
@preserve_roles = false
|
27
28
|
@logger = Logger.new(options)
|
28
29
|
end
|
29
30
|
|
@@ -48,7 +48,9 @@ module Capistrano
|
|
48
48
|
filter_server_list(hosts.uniq)
|
49
49
|
end
|
50
50
|
else
|
51
|
-
|
51
|
+
roles = role_list_from(ENV['ROLES'] || options[:roles] || self.roles.keys)
|
52
|
+
roles = roles & Array(options[:roles]) if preserve_roles && !options[:roles].nil?
|
53
|
+
|
52
54
|
only = options[:only] || {}
|
53
55
|
except = options[:except] || {}
|
54
56
|
|
@@ -93,4 +95,4 @@ module Capistrano
|
|
93
95
|
end
|
94
96
|
end
|
95
97
|
end
|
96
|
-
end
|
98
|
+
end
|
@@ -45,14 +45,13 @@ _cset :version_dir, "releases"
|
|
45
45
|
_cset :shared_dir, "shared"
|
46
46
|
_cset :shared_children, %w(system log pids)
|
47
47
|
_cset :current_dir, "current"
|
48
|
+
_cset :restart_method "apache"
|
48
49
|
|
49
50
|
_cset(:releases_path) { File.join(deploy_to, version_dir) }
|
50
51
|
_cset(:shared_path) { File.join(deploy_to, shared_dir) }
|
51
52
|
_cset(:current_path) { File.join(deploy_to, current_dir) }
|
52
53
|
_cset(:release_path) { File.join(releases_path, release_name) }
|
53
54
|
|
54
|
-
# re: https://capistrano.lighthouseapp.com/projects/8716/tickets/88-getting-the-newest-directory
|
55
|
-
# remove system inconsistencies with ls and let ruby sort the releases
|
56
55
|
_cset(:releases) { capture("ls -x #{releases_path}").split.sort }
|
57
56
|
_cset(:current_release) { File.join(releases_path, releases.last) }
|
58
57
|
_cset(:previous_release) { releases.length > 1 ? File.join(releases_path, releases[-2]) : nil }
|
data/lib/capistrano/version.rb
CHANGED
@@ -1,18 +1,15 @@
|
|
1
|
-
require 'net/ssh/version'
|
2
|
-
|
3
1
|
module Capistrano
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
MINOR = 5
|
9
|
-
TINY = 14
|
3
|
+
class Version
|
4
|
+
|
5
|
+
CURRENT = File.read(File.dirname(__FILE__) + '/../../VERSION')
|
10
6
|
|
11
|
-
|
12
|
-
CURRENT = new(MAJOR, MINOR, TINY)
|
7
|
+
STRING = CURRENT.to_s
|
13
8
|
|
14
|
-
|
15
|
-
|
9
|
+
def self.to_s
|
10
|
+
CURRENT
|
11
|
+
end
|
12
|
+
|
16
13
|
end
|
17
14
|
|
18
15
|
end
|
data/test/cli/execute_test.rb
CHANGED
@@ -15,7 +15,7 @@ class CLIExecuteTest < Test::Unit::TestCase
|
|
15
15
|
def setup
|
16
16
|
@cli = MockCLI.new
|
17
17
|
@logger = stub_everything
|
18
|
-
@config = stub(:logger => @logger, :debug= => nil, :dry_run= => nil)
|
18
|
+
@config = stub(:logger => @logger, :debug= => nil, :dry_run= => nil, :preserve_roles= => nil)
|
19
19
|
@config.stubs(:set)
|
20
20
|
@config.stubs(:load)
|
21
21
|
@config.stubs(:trigger)
|
@@ -129,4 +129,4 @@ class CLIExecuteTest < Test::Unit::TestCase
|
|
129
129
|
MockCLI.expects(:parse).with(ARGV).returns(cli)
|
130
130
|
MockCLI.execute
|
131
131
|
end
|
132
|
-
end
|
132
|
+
end
|
data/test/cli/options_test.rb
CHANGED
@@ -93,6 +93,18 @@ class CLIOptionsTest < Test::Unit::TestCase
|
|
93
93
|
assert_equal 0, @cli.options[:verbose]
|
94
94
|
end
|
95
95
|
|
96
|
+
def test_parse_options_with_r_should_set_preserve_roles_option
|
97
|
+
@cli.args << "-r"
|
98
|
+
@cli.parse_options!
|
99
|
+
assert @cli.options[:preserve_roles]
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_parse_options_with_preserve_roles_should_set_preserve_roles_option
|
103
|
+
@cli.args << "--preserve-roles"
|
104
|
+
@cli.parse_options!
|
105
|
+
assert @cli.options[:preserve_roles]
|
106
|
+
end
|
107
|
+
|
96
108
|
def test_parse_options_with_S_should_set_pre_vars
|
97
109
|
@cli.args << "-S" << "foo=bar"
|
98
110
|
@cli.parse_options!
|
@@ -5,9 +5,11 @@ require 'capistrano/configuration/servers'
|
|
5
5
|
class ConfigurationServersTest < Test::Unit::TestCase
|
6
6
|
class MockConfig
|
7
7
|
attr_reader :roles
|
8
|
+
attr_accessor :preserve_roles
|
8
9
|
|
9
10
|
def initialize
|
10
11
|
@roles = {}
|
12
|
+
@preserve_roles = false
|
11
13
|
end
|
12
14
|
|
13
15
|
include Capistrano::Configuration::Servers
|
@@ -62,6 +64,33 @@ class ConfigurationServersTest < Test::Unit::TestCase
|
|
62
64
|
ENV.delete('ROLES')
|
63
65
|
end
|
64
66
|
|
67
|
+
def test_task_with_roles_as_environment_variable_and_preserve_roles_should_apply_only_to_existant_task_role
|
68
|
+
ENV['ROLES'] = "app,file"
|
69
|
+
@config.preserve_roles = true
|
70
|
+
task = new_task(:testing,@config, :roles => :app)
|
71
|
+
assert_equal %w(app1 app2 app3).sort, @config.find_servers_for_task(task).map { |s| s.host }.sort
|
72
|
+
ensure
|
73
|
+
ENV.delete('ROLES')
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_task_with_roles_as_environment_variable_and_preserve_roles_should_apply_only_to_existant_task_roles
|
77
|
+
ENV['ROLES'] = "app,file,web"
|
78
|
+
@config.preserve_roles = true
|
79
|
+
task = new_task(:testing,@config, :roles => [ :app,:file ])
|
80
|
+
assert_equal %w(app1 app2 app3 file).sort, @config.find_servers_for_task(task).map { |s| s.host }.sort
|
81
|
+
ensure
|
82
|
+
ENV.delete('ROLES')
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_task_with_roles_as_environment_variable_and_preserve_roles_should_not_apply_if_not_exists_those_task_roles
|
86
|
+
ENV['ROLES'] = "file,web"
|
87
|
+
@config.preserve_roles = true
|
88
|
+
task = new_task(:testing,@config, :roles => [ :app ])
|
89
|
+
assert_equal [], @config.find_servers_for_task(task).map { |s| s.host }.sort
|
90
|
+
ensure
|
91
|
+
ENV.delete('ROLES')
|
92
|
+
end
|
93
|
+
|
65
94
|
def test_task_with_hosts_as_environment_variable_should_apply_only_to_those_hosts
|
66
95
|
ENV['HOSTS'] = "foo,bar"
|
67
96
|
task = new_task(:testing)
|
@@ -126,4 +155,4 @@ class ConfigurationServersTest < Test::Unit::TestCase
|
|
126
155
|
assert_equal %w(app1 app2 app3), @config.find_servers(:roles => lambda { :app }).map { |s| s.host }.sort
|
127
156
|
assert_equal %w(app2 file), @config.find_servers(:roles => lambda { [:report, :file] }).map { |s| s.host }.sort
|
128
157
|
end
|
129
|
-
end
|
158
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-
|
13
|
+
date: 2010-02-14 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -78,18 +78,17 @@ email:
|
|
78
78
|
- jamis@jamisbuck.org
|
79
79
|
- lee.hambley@gmail.com
|
80
80
|
executables:
|
81
|
-
- cap
|
82
81
|
- capify
|
82
|
+
- cap
|
83
83
|
extensions: []
|
84
84
|
|
85
85
|
extra_rdoc_files:
|
86
|
-
- README
|
86
|
+
- README
|
87
87
|
files:
|
88
88
|
- .gitignore
|
89
|
-
- CHANGELOG
|
90
|
-
- README
|
89
|
+
- CHANGELOG
|
90
|
+
- README
|
91
91
|
- Rakefile
|
92
|
-
- TESTING.md
|
93
92
|
- VERSION
|
94
93
|
- bin/cap
|
95
94
|
- bin/capify
|
@@ -144,7 +143,6 @@ files:
|
|
144
143
|
- lib/capistrano/recipes/deploy/templates/maintenance.rhtml
|
145
144
|
- lib/capistrano/recipes/standard.rb
|
146
145
|
- lib/capistrano/recipes/templates/maintenance.rhtml
|
147
|
-
- lib/capistrano/recipes/upgrade.rb
|
148
146
|
- lib/capistrano/role.rb
|
149
147
|
- lib/capistrano/server_definition.rb
|
150
148
|
- lib/capistrano/shell.rb
|
data/TESTING.md
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
Testing Capistrano
|
2
|
-
==================
|
3
|
-
|
4
|
-
1. Install the Following Gem Dependencies
|
5
|
-
|
6
|
-
`# gem install mocha echoe`
|
7
|
-
|
8
|
-
2. Run the following
|
9
|
-
|
10
|
-
`$ rake test`
|
11
|
-
|
12
|
-
3. Output Should Resemble
|
13
|
-
|
14
|
-
`Finished in 0.859017 seconds.`
|
15
|
-
`523 tests, 1271 assertions, 0 failures, 0 errors`
|
16
|
-
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# Tasks to aid the migration of an established Capistrano 1.x installation to
|
2
|
-
# Capistrano 2.x.
|
3
|
-
|
4
|
-
namespace :upgrade do
|
5
|
-
desc <<-DESC
|
6
|
-
Migrate from the revisions log to REVISION. Capistrano 1.x recorded each \
|
7
|
-
deployment to a revisions.log file. Capistrano 2.x is cleaner, and just \
|
8
|
-
puts a REVISION file in the root of the deployed revision. This task \
|
9
|
-
migrates from the revisions.log used in Capistrano 1.x, to the REVISION \
|
10
|
-
tag file used in Capistrano 2.x. It is non-destructive and may be safely \
|
11
|
-
run any number of times.
|
12
|
-
DESC
|
13
|
-
task :revisions, :except => { :no_release => true } do
|
14
|
-
revisions = capture("cat #{deploy_to}/revisions.log")
|
15
|
-
|
16
|
-
mapping = {}
|
17
|
-
revisions.each do |line|
|
18
|
-
revision, directory = line.chomp.split[-2,2]
|
19
|
-
mapping[directory] = revision
|
20
|
-
end
|
21
|
-
|
22
|
-
commands = mapping.keys.map do |directory|
|
23
|
-
"echo '.'; test -d #{directory} && echo '#{mapping[directory]}' > #{directory}/REVISION"
|
24
|
-
end
|
25
|
-
|
26
|
-
command = commands.join(";")
|
27
|
-
|
28
|
-
run "cd #{releases_path}; #{command}; true" do |ch, stream, out|
|
29
|
-
STDOUT.print(".")
|
30
|
-
STDOUT.flush
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|