capistrano 2.5.18 → 2.5.20

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,4 @@
1
+ require 'benchmark'
1
2
  require 'yaml'
2
3
  require 'capistrano/recipes/deploy/scm'
3
4
  require 'capistrano/recipes/deploy/strategy'
@@ -27,6 +28,9 @@ _cset :deploy_via, :checkout
27
28
  _cset(:deploy_to) { "/u/apps/#{application}" }
28
29
  _cset(:revision) { source.head }
29
30
 
31
+ # Maintenance base filename
32
+ _cset :maintenance_basename, "maintenance"
33
+
30
34
  # =========================================================================
31
35
  # These variables should NOT be changed unless you are very confident in
32
36
  # what you are doing. Make sure you understand all the implications of your
@@ -51,13 +55,13 @@ _cset(:shared_path) { File.join(deploy_to, shared_dir) }
51
55
  _cset(:current_path) { File.join(deploy_to, current_dir) }
52
56
  _cset(:release_path) { File.join(releases_path, release_name) }
53
57
 
54
- _cset(:releases) { capture("ls -x #{releases_path}").split.sort }
58
+ _cset(:releases) { capture("ls -x #{releases_path}", :except => { :no_release => true }).split.sort }
55
59
  _cset(:current_release) { File.join(releases_path, releases.last) }
56
60
  _cset(:previous_release) { releases.length > 1 ? File.join(releases_path, releases[-2]) : nil }
57
61
 
58
- _cset(:current_revision) { capture("cat #{current_path}/REVISION").chomp }
59
- _cset(:latest_revision) { capture("cat #{current_release}/REVISION").chomp }
60
- _cset(:previous_revision) { capture("cat #{previous_release}/REVISION").chomp }
62
+ _cset(:current_revision) { capture("cat #{current_path}/REVISION", :except => { :no_release => true }).chomp }
63
+ _cset(:latest_revision) { capture("cat #{current_release}/REVISION", :except => { :no_release => true }).chomp }
64
+ _cset(:previous_revision) { capture("cat #{previous_release}/REVISION", :except => { :no_release => true }).chomp if previous_release }
61
65
 
62
66
  _cset(:run_method) { fetch(:use_sudo, true) ? :sudo : :run }
63
67
 
@@ -95,10 +99,14 @@ end
95
99
  # returns the command output as a string
96
100
  def run_locally(cmd)
97
101
  logger.trace "executing locally: #{cmd.inspect}" if logger
98
- output_on_stdout = `#{cmd}`
102
+ output_on_stdout = nil
103
+ elapsed = Benchmark.realtime do
104
+ output_on_stdout = `#{cmd}`
105
+ end
99
106
  if $?.to_i > 0 # $? is command exit code (posix style)
100
107
  raise Capistrano::LocalArgumentError, "Command #{cmd} returned status code #{$?}"
101
108
  end
109
+ logger.trace "command finished in #{(elapsed * 1000).round}ms" if logger
102
110
  output_on_stdout
103
111
  end
104
112
 
@@ -224,7 +232,8 @@ namespace :deploy do
224
232
  public/stylesheets, and public/javascripts so that the times are \
225
233
  consistent (so that asset timestamping works). This touch process \
226
234
  is only carried out if the :normalize_asset_timestamps variable is \
227
- set to true, which is the default.
235
+ set to true, which is the default The asset directories can be overridden \
236
+ using the :public_children variable.
228
237
  DESC
229
238
  task :finalize_update, :except => { :no_release => true } do
230
239
  run "chmod -R g+w #{latest_release}" if fetch(:group_writable, true)
@@ -242,7 +251,7 @@ namespace :deploy do
242
251
 
243
252
  if fetch(:normalize_asset_timestamps, true)
244
253
  stamp = Time.now.utc.strftime("%Y%m%d%H%M.%S")
245
- asset_paths = %w(images stylesheets javascripts).map { |p| "#{latest_release}/public/#{p}" }.join(" ")
254
+ asset_paths = fetch(:public_children, %w(images stylesheets javascripts)).map { |p| "#{latest_release}/public/#{p}" }.join(" ")
246
255
  run "find #{asset_paths} -exec touch -t #{stamp} {} ';'; true", :env => { "TZ" => "UTC" }
247
256
  end
248
257
  end
@@ -382,11 +391,10 @@ namespace :deploy do
382
391
 
383
392
  directory = case migrate_target.to_sym
384
393
  when :current then current_path
385
- when :latest then current_release
394
+ when :latest then latest_release
386
395
  else raise ArgumentError, "unknown migration target #{migrate_target.inspect}"
387
396
  end
388
397
 
389
- puts "#{migrate_target} => #{directory}"
390
398
  run "cd #{directory}; #{rake} RAILS_ENV=#{rails_env} #{migrate_env} db:migrate"
391
399
  end
392
400
 
@@ -536,7 +544,7 @@ namespace :deploy do
536
544
  namespace :web do
537
545
  desc <<-DESC
538
546
  Present a maintenance page to visitors. Disables your application's web \
539
- interface by writing a "maintenance.html" file to each web server. The \
547
+ interface by writing a "#{maintenance_basename}.html" file to each web server. The \
540
548
  servers must be configured to detect the presence of this file, and if \
541
549
  it is present, always display it instead of performing the request.
542
550
 
@@ -552,18 +560,18 @@ namespace :deploy do
552
560
  DESC
553
561
  task :disable, :roles => :web, :except => { :no_release => true } do
554
562
  require 'erb'
555
- on_rollback { run "rm #{shared_path}/system/maintenance.html" }
563
+ on_rollback { run "rm #{shared_path}/system/#{maintenance_basename}.html" }
556
564
 
557
565
  warn <<-EOHTACCESS
558
-
566
+
559
567
  # Please add something like this to your site's htaccess to redirect users to the maintenance page.
560
568
  # More Info: http://www.shiftcommathree.com/articles/make-your-rails-maintenance-page-respond-with-a-503
561
-
562
- ErrorDocument 503 /system/maintenance.html
569
+
570
+ ErrorDocument 503 /system/#{maintenance_basename}.html
563
571
  RewriteEngine On
564
572
  RewriteCond %{REQUEST_URI} !\.(css|gif|jpg|png)$
565
- RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
566
- RewriteCond %{SCRIPT_FILENAME} !maintenance.html
573
+ RewriteCond %{DOCUMENT_ROOT}/system/#{maintenance_basename}.html -f
574
+ RewriteCond %{SCRIPT_FILENAME} !#{maintenance_basename}.html
567
575
  RewriteRule ^.*$ - [redirect=503,last]
568
576
  EOHTACCESS
569
577
 
@@ -573,17 +581,17 @@ namespace :deploy do
573
581
  template = File.read(File.join(File.dirname(__FILE__), "templates", "maintenance.rhtml"))
574
582
  result = ERB.new(template).result(binding)
575
583
 
576
- put result, "#{shared_path}/system/maintenance.html", :mode => 0644
584
+ put result, "#{shared_path}/system/#{maintenance_basename}.html", :mode => 0644
577
585
  end
578
586
 
579
587
  desc <<-DESC
580
588
  Makes the application web-accessible again. Removes the \
581
- "maintenance.html" page generated by deploy:web:disable, which (if your \
589
+ "#{maintenance_basename}.html" page generated by deploy:web:disable, which (if your \
582
590
  web servers are configured correctly) will make your application \
583
591
  web-accessible again.
584
592
  DESC
585
593
  task :enable, :roles => :web, :except => { :no_release => true } do
586
- run "rm #{shared_path}/system/maintenance.html"
594
+ run "rm #{shared_path}/system/#{maintenance_basename}.html"
587
595
  end
588
596
  end
589
597
  end
@@ -37,13 +37,13 @@ class ConfigurationActionsFileTransferTest < Test::Unit::TestCase
37
37
 
38
38
  def test_upload_with_mode_should_try_to_chmod
39
39
  @config.expects(:transfer).with(:up, "testl.txt", "testr.txt", :foo => "bar")
40
- @config.expects(:run).with("chmod 775 testr.txt")
40
+ @config.expects(:run).with("chmod 775 testr.txt", {:foo => "bar"})
41
41
  @config.upload("testl.txt", "testr.txt", :mode => 0775, :foo => "bar")
42
42
  end
43
43
 
44
44
  def test_upload_with_symbolic_mode_should_try_to_chmod
45
45
  @config.expects(:transfer).with(:up, "testl.txt", "testr.txt", :foo => "bar")
46
- @config.expects(:run).with("chmod g+w testr.txt")
46
+ @config.expects(:run).with("chmod g+w testr.txt", {:foo => "bar"})
47
47
  @config.upload("testl.txt", "testr.txt", :mode => "g+w", :foo => "bar")
48
48
  end
49
49
 
@@ -58,4 +58,4 @@ class ConfigurationActionsFileTransferTest < Test::Unit::TestCase
58
58
  Capistrano::Transfer.expects(:process).with(:up, "testl.txt", "testr.txt", [1,2,3], {:foo => "bar", :logger => @config.logger})
59
59
  @config.transfer(:up, "testl.txt", "testr.txt", :foo => "bar")
60
60
  end
61
- end
61
+ end
@@ -37,6 +37,12 @@ class RemoteDependencyTest < Test::Unit::TestCase
37
37
  assert_equal "gem `capistrano' 9.9 could not be found (host)", @dependency.message
38
38
  end
39
39
 
40
+ def test_should_use_standard_error_message_for_deb
41
+ setup_for_a_configuration_deb_run("dpkg", "1.15", false)
42
+ @dependency.deb("dpkg", "1.15")
43
+ assert_equal "package `dpkg' 1.15 could not be found (host)", @dependency.message
44
+ end
45
+
40
46
  def test_should_fail_if_directory_not_found
41
47
  setup_for_a_configuration_run("test -d /data", false)
42
48
  assert !@dependency.directory("/data").pass?
@@ -52,7 +58,7 @@ class RemoteDependencyTest < Test::Unit::TestCase
52
58
  assert !@dependency.file("/data/foo.txt").pass?
53
59
  end
54
60
 
55
- def test_should_pas_if_file_found
61
+ def test_should_pass_if_file_found
56
62
  setup_for_a_configuration_run("test -f /data/foo.txt", true)
57
63
  assert @dependency.file("/data/foo.txt").pass?
58
64
  end
@@ -87,6 +93,16 @@ class RemoteDependencyTest < Test::Unit::TestCase
87
93
  assert @dependency.gem("capistrano", 9.9).pass?
88
94
  end
89
95
 
96
+ def test_should_pass_if_deb_found
97
+ setup_for_a_configuration_deb_run("dpkg", "1.15", true)
98
+ assert @dependency.deb("dpkg", "1.15").pass?
99
+ end
100
+
101
+ def test_should_fail_if_deb_not_found
102
+ setup_for_a_configuration_deb_run("dpkg", "1.15", false)
103
+ assert !@dependency.deb("dpkg", "1.15").pass?
104
+ end
105
+
90
106
  def test_should_use_alternative_message_if_provided
91
107
  setup_for_a_configuration_run("which cat", false)
92
108
  @dependency.command("cat").or("Sorry")
@@ -111,4 +127,9 @@ class RemoteDependencyTest < Test::Unit::TestCase
111
127
  find_gem_cmd = "gem specification --version '#{version}' #{name} 2>&1 | awk 'BEGIN { s = 0 } /^name:/ { s = 1; exit }; END { if(s == 0) exit 1 }'"
112
128
  setup_for_a_configuration_run(find_gem_cmd, passing)
113
129
  end
130
+
131
+ def setup_for_a_configuration_deb_run(name, version, passing)
132
+ find_deb_cmd = "dpkg -s #{name} | grep '^Version: #{version}'"
133
+ setup_for_a_configuration_run(find_deb_cmd, passing)
134
+ end
114
135
  end
@@ -40,7 +40,7 @@ class DeploySCMGitTest < Test::Unit::TestCase
40
40
 
41
41
  # with submodules
42
42
  @config[:git_enable_submodules] = true
43
- assert_equal "#{git} clone -q git@somehost.com:project.git /var/www && cd /var/www && #{git} checkout -q -b deploy #{rev} && #{git} submodule -q init && #{git} submodule -q sync && #{git} submodule -q update", @source.checkout(rev, dest)
43
+ assert_equal "#{git} clone -q git@somehost.com:project.git /var/www && cd /var/www && #{git} checkout -q -b deploy #{rev} && #{git} submodule -q init && #{git} submodule -q sync && #{git} submodule -q update --recursive", @source.checkout(rev, dest)
44
44
  end
45
45
 
46
46
  def test_checkout_with_verbose_should_not_use_q_switch
@@ -138,7 +138,7 @@ class DeploySCMGitTest < Test::Unit::TestCase
138
138
  @config[:git_enable_submodules] = true
139
139
  dest = "/var/www"
140
140
  rev = 'c2d9e79'
141
- assert_equal "git clone -q -o username git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev} && git submodule -q init && git submodule -q sync && git submodule -q update", @source.checkout(rev, dest)
141
+ assert_equal "git clone -q -o username git@somehost.com:project.git /var/www && cd /var/www && git checkout -q -b deploy #{rev} && git submodule -q init && git submodule -q sync && git submodule -q update --recursive", @source.checkout(rev, dest)
142
142
  end
143
143
 
144
144
  # Tests from base_test.rb, makin' sure we didn't break anything up there!
@@ -14,16 +14,16 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
14
14
  @config.stubs(:source).returns(@source)
15
15
  @strategy = Capistrano::Deploy::Strategy::Copy.new(@config)
16
16
  end
17
-
17
+
18
18
  def test_deploy_with_defaults_should_use_remote_gtar
19
19
  @config[:copy_remote_tar] = 'gtar'
20
-
20
+
21
21
  Dir.expects(:tmpdir).returns("/temp/dir")
22
22
  @source.expects(:checkout).with("154", "/temp/dir/1234567890").returns(:local_checkout)
23
23
  @strategy.expects(:system).with(:local_checkout)
24
24
 
25
25
  Dir.expects(:chdir).with("/temp/dir").yields
26
- @strategy.expects(:system).with("tar czf 1234567890.tar.gz 1234567890")
26
+ @strategy.expects(:system).with("tar chzf 1234567890.tar.gz 1234567890")
27
27
  @strategy.expects(:upload).with("/temp/dir/1234567890.tar.gz", "/tmp/1234567890.tar.gz")
28
28
  @strategy.expects(:run).with("cd /u/apps/test/releases && gtar xzf /tmp/1234567890.tar.gz && rm /tmp/1234567890.tar.gz")
29
29
 
@@ -33,19 +33,19 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
33
33
 
34
34
  FileUtils.expects(:rm).with("/temp/dir/1234567890.tar.gz")
35
35
  FileUtils.expects(:rm_rf).with("/temp/dir/1234567890")
36
-
36
+
37
37
  @strategy.deploy!
38
38
  end
39
-
39
+
40
40
  def test_deploy_with_defaults_should_use_local_gtar
41
41
  @config[:copy_local_tar] = 'gtar'
42
-
42
+
43
43
  Dir.expects(:tmpdir).returns("/temp/dir")
44
44
  @source.expects(:checkout).with("154", "/temp/dir/1234567890").returns(:local_checkout)
45
45
  @strategy.expects(:system).with(:local_checkout)
46
46
 
47
47
  Dir.expects(:chdir).with("/temp/dir").yields
48
- @strategy.expects(:system).with("gtar czf 1234567890.tar.gz 1234567890")
48
+ @strategy.expects(:system).with("gtar chzf 1234567890.tar.gz 1234567890")
49
49
  @strategy.expects(:upload).with("/temp/dir/1234567890.tar.gz", "/tmp/1234567890.tar.gz")
50
50
  @strategy.expects(:run).with("cd /u/apps/test/releases && tar xzf /tmp/1234567890.tar.gz && rm /tmp/1234567890.tar.gz")
51
51
 
@@ -55,9 +55,9 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
55
55
 
56
56
  FileUtils.expects(:rm).with("/temp/dir/1234567890.tar.gz")
57
57
  FileUtils.expects(:rm_rf).with("/temp/dir/1234567890")
58
-
58
+
59
59
  @strategy.deploy!
60
- end
60
+ end
61
61
 
62
62
  def test_deploy_with_defaults_should_use_tar_gz_and_checkout
63
63
  Dir.expects(:tmpdir).returns("/temp/dir")
@@ -130,7 +130,7 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
130
130
  @source.expects(:checkout).with("154", "/temp/dir/1234567890").returns(:local_checkout)
131
131
 
132
132
  @strategy.expects(:system).with(:local_checkout)
133
- @strategy.expects(:system).with("tar cjf 1234567890.tar.bz2 1234567890")
133
+ @strategy.expects(:system).with("tar chjf 1234567890.tar.bz2 1234567890")
134
134
  @strategy.expects(:upload).with("/temp/dir/1234567890.tar.bz2", "/tmp/1234567890.tar.bz2")
135
135
  @strategy.expects(:run).with("cd /u/apps/test/releases && tar xjf /tmp/1234567890.tar.bz2 && rm /tmp/1234567890.tar.bz2")
136
136
 
@@ -143,17 +143,17 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
143
143
 
144
144
  @strategy.deploy!
145
145
  end
146
-
146
+
147
147
  def test_deploy_with_unknown_compression_type_should_error
148
148
  @config[:copy_compression] = :bogus
149
149
  Dir.expects(:tmpdir).returns("/temp/dir")
150
150
  @source.expects(:checkout).with("154", "/temp/dir/1234567890").returns(:local_checkout)
151
151
  @strategy.stubs(:system)
152
152
  File.stubs(:open)
153
-
153
+
154
154
  assert_raises(ArgumentError) { @strategy.deploy! }
155
155
  end
156
-
156
+
157
157
  def test_deploy_with_custom_copy_dir_should_use_that_as_tmpdir
158
158
  Dir.expects(:tmpdir).never
159
159
  Dir.expects(:chdir).with("/other/path").yields
@@ -161,7 +161,7 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
161
161
  @source.expects(:checkout).with("154", "/other/path/1234567890").returns(:local_checkout)
162
162
 
163
163
  @strategy.expects(:system).with(:local_checkout)
164
- @strategy.expects(:system).with("tar czf 1234567890.tar.gz 1234567890")
164
+ @strategy.expects(:system).with("tar chzf 1234567890.tar.gz 1234567890")
165
165
  @strategy.expects(:upload).with("/other/path/1234567890.tar.gz", "/tmp/1234567890.tar.gz")
166
166
  @strategy.expects(:run).with("cd /u/apps/test/releases && tar xzf /tmp/1234567890.tar.gz && rm /tmp/1234567890.tar.gz")
167
167
 
@@ -182,7 +182,7 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
182
182
  @source.expects(:checkout).returns(:local_checkout)
183
183
 
184
184
  @strategy.expects(:system).with(:local_checkout)
185
- @strategy.expects(:system).with("tar czf 1234567890.tar.gz 1234567890")
185
+ @strategy.expects(:system).with("tar chzf 1234567890.tar.gz 1234567890")
186
186
  @strategy.expects(:upload).with("/temp/dir/1234567890.tar.gz", "/somewhere/else/1234567890.tar.gz")
187
187
  @strategy.expects(:run).with("cd /u/apps/test/releases && tar xzf /somewhere/else/1234567890.tar.gz && rm /somewhere/else/1234567890.tar.gz")
188
188
 
@@ -288,7 +288,7 @@ class DeployStrategyCopyTest < Test::Unit::TestCase
288
288
 
289
289
  def prepare_standard_compress_and_copy!
290
290
  Dir.expects(:chdir).with("/temp/dir").yields
291
- @strategy.expects(:system).with("tar czf 1234567890.tar.gz 1234567890")
291
+ @strategy.expects(:system).with("tar chzf 1234567890.tar.gz 1234567890")
292
292
  @strategy.expects(:upload).with("/temp/dir/1234567890.tar.gz", "/tmp/1234567890.tar.gz")
293
293
  @strategy.expects(:run).with("cd /u/apps/test/releases && tar xzf /tmp/1234567890.tar.gz && rm /tmp/1234567890.tar.gz")
294
294
 
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.18
4
+ hash: 51
5
+ prerelease: false
6
+ segments:
7
+ - 2
8
+ - 5
9
+ - 20
10
+ version: 2.5.20
5
11
  platform: ruby
6
12
  authors:
7
13
  - Jamis Buck
@@ -10,69 +16,171 @@ autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
18
 
13
- date: 2010-03-14 00:00:00 +01:00
19
+ date: 2011-03-16 00:00:00 +01:00
14
20
  default_executable:
15
21
  dependencies:
16
22
  - !ruby/object:Gem::Dependency
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
17
34
  name: net-ssh
35
+ requirement: *id001
36
+ - !ruby/object:Gem::Dependency
18
37
  type: :runtime
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ none: false
21
41
  requirements:
22
42
  - - ">="
23
43
  - !ruby/object:Gem::Version
24
- version: 2.0.14
25
- version:
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ name: net-ssh-gateway
49
+ requirement: *id002
26
50
  - !ruby/object:Gem::Dependency
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
27
62
  name: net-sftp
63
+ requirement: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ name: net-scp
77
+ requirement: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ type: :runtime
80
+ prerelease: false
81
+ version_requirements: &id005 !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ name: highline
91
+ requirement: *id005
92
+ - !ruby/object:Gem::Dependency
28
93
  type: :runtime
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
94
+ prerelease: false
95
+ version_requirements: &id006 !ruby/object:Gem::Requirement
96
+ none: false
31
97
  requirements:
32
98
  - - ">="
33
99
  - !ruby/object:Gem::Version
100
+ hash: 19
101
+ segments:
102
+ - 2
103
+ - 0
104
+ - 14
105
+ version: 2.0.14
106
+ name: net-ssh
107
+ requirement: *id006
108
+ - !ruby/object:Gem::Dependency
109
+ type: :runtime
110
+ prerelease: false
111
+ version_requirements: &id007 !ruby/object:Gem::Requirement
112
+ none: false
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ hash: 15
117
+ segments:
118
+ - 2
119
+ - 0
120
+ - 0
34
121
  version: 2.0.0
35
- version:
122
+ name: net-sftp
123
+ requirement: *id007
36
124
  - !ruby/object:Gem::Dependency
37
- name: net-scp
38
125
  type: :runtime
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
126
+ prerelease: false
127
+ version_requirements: &id008 !ruby/object:Gem::Requirement
128
+ none: false
41
129
  requirements:
42
130
  - - ">="
43
131
  - !ruby/object:Gem::Version
132
+ hash: 23
133
+ segments:
134
+ - 1
135
+ - 0
136
+ - 0
44
137
  version: 1.0.0
45
- version:
138
+ name: net-scp
139
+ requirement: *id008
46
140
  - !ruby/object:Gem::Dependency
47
- name: net-ssh-gateway
48
141
  type: :runtime
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
142
+ prerelease: false
143
+ version_requirements: &id009 !ruby/object:Gem::Requirement
144
+ none: false
51
145
  requirements:
52
146
  - - ">="
53
147
  - !ruby/object:Gem::Version
148
+ hash: 23
149
+ segments:
150
+ - 1
151
+ - 0
152
+ - 0
54
153
  version: 1.0.0
55
- version:
154
+ name: net-ssh-gateway
155
+ requirement: *id009
56
156
  - !ruby/object:Gem::Dependency
57
- name: highline
58
157
  type: :runtime
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
158
+ prerelease: false
159
+ version_requirements: &id010 !ruby/object:Gem::Requirement
160
+ none: false
61
161
  requirements:
62
162
  - - ">="
63
163
  - !ruby/object:Gem::Version
164
+ hash: 3
165
+ segments:
166
+ - 0
64
167
  version: "0"
65
- version:
168
+ name: highline
169
+ requirement: *id010
66
170
  - !ruby/object:Gem::Dependency
67
- name: mocha
68
171
  type: :development
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Requirement
172
+ prerelease: false
173
+ version_requirements: &id011 !ruby/object:Gem::Requirement
174
+ none: false
71
175
  requirements:
72
176
  - - ">="
73
177
  - !ruby/object:Gem::Version
178
+ hash: 3
179
+ segments:
180
+ - 0
74
181
  version: "0"
75
- version:
182
+ name: mocha
183
+ requirement: *id011
76
184
  description: Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.
77
185
  email:
78
186
  - jamis@jamisbuck.org
@@ -83,11 +191,11 @@ executables:
83
191
  extensions: []
84
192
 
85
193
  extra_rdoc_files:
86
- - README
194
+ - README.mdown
87
195
  files:
88
- - .gitignore
89
196
  - CHANGELOG
90
- - README
197
+ - Gemfile
198
+ - README.mdown
91
199
  - Rakefile
92
200
  - VERSION
93
201
  - bin/cap
@@ -196,29 +304,35 @@ homepage: http://github.com/capistrano/capistrano
196
304
  licenses: []
197
305
 
198
306
  post_install_message:
199
- rdoc_options:
200
- - --charset=UTF-8
307
+ rdoc_options: []
308
+
201
309
  require_paths:
202
310
  - lib
203
311
  required_ruby_version: !ruby/object:Gem::Requirement
312
+ none: false
204
313
  requirements:
205
314
  - - ">="
206
315
  - !ruby/object:Gem::Version
316
+ hash: 3
317
+ segments:
318
+ - 0
207
319
  version: "0"
208
- version:
209
320
  required_rubygems_version: !ruby/object:Gem::Requirement
321
+ none: false
210
322
  requirements:
211
323
  - - ">="
212
324
  - !ruby/object:Gem::Version
325
+ hash: 3
326
+ segments:
327
+ - 0
213
328
  version: "0"
214
- version:
215
329
  requirements: []
216
330
 
217
331
  rubyforge_project:
218
- rubygems_version: 1.3.5
332
+ rubygems_version: 1.3.7
219
333
  signing_key:
220
334
  specification_version: 3
221
- summary: "Capistrano \xE2\x80\x93 Welcome to easy deployment with Ruby over SSH"
335
+ summary: Capistrano - Welcome to easy deployment with Ruby over SSH
222
336
  test_files:
223
337
  - test/cli/execute_test.rb
224
338
  - test/cli/help_test.rb
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- coverage
2
- doc
3
- pkg
4
- *.swp
5
- *.patch
6
- *.gem
7
- *.sh
8
- .DS_Store
9
- capistrano.gemspec