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