net-ssh-multi 1.2.1 → 1.3.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d7f1db872a17326b087503b4f113e23d7b61240c
4
+ data.tar.gz: 77b214deccd4705a1190f1aa6ed2c852733c6fb9
5
+ SHA512:
6
+ metadata.gz: 8eaad6d8cb066ee49066c0741350dcb39bab6935c66a61f90142e64d9d5de9d466040415715107fb92b7b2a03c65ca4d6295ad63dfb0d60b28a897a143c0a7db
7
+ data.tar.gz: 80fdc25e4cc1df9655777243a971a79d4bc963780c4d489ab453aae891f04d7e354834ad2cf28a40fb8f559cb0c0aa7a7dcc8adc74252b662967771fb42f72dc
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ sudo: false
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - 2.2.0
7
+ - 2.3.0
8
+ - jruby-head
9
+ - rbx-2
10
+
11
+ install: gem install test-unit mocha net-ssh net-ssh-gateway
12
+
13
+ script: rake test
14
+
15
+ matrix:
16
+ allow_failures:
17
+ - rvm: jruby-head
@@ -1,3 +1,8 @@
1
+ === 1.3.0.rc1 / 12 Mar 2016
2
+
3
+ * Make sure we wait no more than keeepalive in select [Eugene Kenny]
4
+ * Forward action [Yukihiko SAWANOBORI]
5
+ * Net-ssh 3.0 compatibility [Balasankar C]
1
6
 
2
7
  === 1.2.1 / 11 Apr 2015
3
8
 
@@ -66,7 +66,7 @@ If you want to run the tests or use any of the Rake tasks, you'll need:
66
66
 
67
67
  * gem install net-ssh-multi
68
68
 
69
- However, in order to be sure the code you're installing hasn't been tampered with, it's recommended that you verify the signiture[http://docs.rubygems.org/read/chapter/21]. To do this, you need to add my public key as a trusted certificate (you only need to do this once):
69
+ However, in order to be sure the code you're installing hasn't been tampered with, it's recommended that you verify the signature[http://docs.rubygems.org/read/chapter/21]. To do this, you need to add my public key as a trusted certificate (you only need to do this once):
70
70
 
71
71
  # Add the public key as a trusted certificate
72
72
  # (You only need to do this once)
data/Rakefile CHANGED
@@ -31,8 +31,14 @@ begin
31
31
 
32
32
  s.license = "MIT"
33
33
 
34
- s.signing_key = File.join('/mnt/gem/', 'gem-private_key.pem')
35
- s.cert_chain = ['gem-public_cert.pem']
34
+ unless ENV['NET_SSH_NOKEY']
35
+ signing_key = File.join('/mnt/gem/', 'net-ssh-private_key.pem')
36
+ s.signing_key = signing_key
37
+ s.cert_chain = ['gem-public_cert.pem']
38
+ unless (Rake.application.top_level_tasks & ['build','install']).empty?
39
+ raise "No key found at #{signing_key} for signing, use rake <taskname> NET_SSH_NOKEY=1 to build without key" unless File.exist?(signing_key)
40
+ end
41
+ end
36
42
  end
37
43
  Jeweler::GemcutterTasks.new
38
44
  rescue LoadError
@@ -1,20 +1,20 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZkZWxh
3
- bm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
4
- b20wHhcNMTMwMjA2MTE1NzQ1WhcNMTQwMjA2MTE1NzQ1WjBBMQ8wDQYDVQQDDAZk
5
- ZWxhbm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
6
- FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDg1hMtl0XsMuUK
7
- AKTgYWv3gjj7vuEsE2EjT+vyBg8/LpqVVwZziiaebJT9IZiQ+sCFqbiakj0b53pI
8
- hg1yOaBEmH6/W0L7rwzqaRV9sW1eJs9JxFYQCnd67zUnzj8nnRlOjG+hhIG+Vsij
9
- npsGbt28pefuNZJjO5q2clAlfSniIIHfIsU7/StEYu6FUGOjnwryZ0r5yJlr9RrE
10
- Gs+q0DW8QnZ9UpAfuDFQZuIqeKQFFLE7nMmCGaA+0BN1nLl3fVHNbLHq7Avk8+Z+
11
- ZuuvkdscbHlO/l+3xCNQ5nUnHwq0ADAbMLOlmiYYzqXoWLjmeI6me/clktJCfN2R
12
- oZG3UQvvAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFMSJOEtHzE4l0azv
13
- M0JK0kKNToK1MAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAtOdE73qx
14
- OH2ydi9oT2hS5f9G0y1Z70Tlwh+VGExyfxzVE9XwC+iPpJxNraiHYgF/9/oky7ZZ
15
- R9q0/tJneuhAenZdiQkX7oi4O3v9wRS6YHoWBxMPFKVRLNTzvVJsbmfpCAlp5/5g
16
- ps4wQFy5mibElGVlOobf/ghqZ25HS9J6kd0/C/ry0AUtTogsL7TxGwT4kbCx63ub
17
- 3vywEEhsJUzfd97GCABmtQfRTldX/j7F1z/5wd8p+hfdox1iibds9ZtfaZA3KzKn
18
- kchWN9B6zg9r1XMQ8BM2Jz0XoPanPe354+lWwjpkRKbFow/ZbQHcCLCq24+N6b6g
19
- dgKfNDzwiDpqCA==
2
+ MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRAwDgYDVQQDDAduZXQt
3
+ c3NoMRkwFwYKCZImiZPyLGQBGRYJc29sdXRpb3VzMRMwEQYKCZImiZPyLGQBGRYD
4
+ Y29tMB4XDTE1MTIwNjIxMDYyNFoXDTE2MTIwNTIxMDYyNFowQjEQMA4GA1UEAwwH
5
+ bmV0LXNzaDEZMBcGCgmSJomT8ixkARkWCXNvbHV0aW91czETMBEGCgmSJomT8ixk
6
+ ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMYnhNtn0f6p
7
+ nTylB8mE8lMdoMLJC8KwpMWsvk73Pe2WVDsH/OSwwwz6oUGk1i70cJyDjIEBNpwT
8
+ 88GpVXJSumvqVsf9fCg3mWNeb5t0J+aeNm9MIvYVMTqj5tydoXQiwnILRDYHV9tZ
9
+ 1c3o59/VlahSTpZ7YEgzVufpAkvEGkbJiG849exiipK7MN/ZIkMOxYVnyRXk43Xc
10
+ 6GYlsHOfSgPwcXwW5g57DCwLQLWrjDsTka28dxDmO7B5Lv5EqzINxVxWsu43OgZG
11
+ 21Io/jIyf5PNpeKPKNGDuAQJ8mvdMYBJoDhtCwgsUYbl0BZzA7g4ytl51HtIeP+j
12
+ Qp/eAvs/RrECAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUBfKiwO2eM4NE
13
+ iRrVG793qEPLYyMwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQCfZFdb
14
+ p4jzkfIzGDbiOxd0R8sdqJoC4nMLEgnQ7dLulawwA3IXe3sHAKgA5kmH3prsKc5H
15
+ zVmM5NlH2P1nRbegIkQTYiIod1hZQCNxdmVG/fprMqPq0ybpUOjjrP5pj0OtszE1
16
+ F2dQia1hOEstMR+n0nAtWII9HJAEyeZjVV0s2Cl7Pt85XJ3hxFcCKwzqsK5xRI7a
17
+ B3vwh3/JJYrFonIohQ//Lg9qTZASEkoKLlq1/hFeICoCGGIGLq45ZB7CzXLooCKi
18
+ s/ZUKye79ELwFYKJOhjW5g725OL3hy+llhEleytwKRwgXFQBPTC4f5UkdxZVVWGH
19
+ e2C9M1m/2odPZo8h
20
20
  -----END CERTIFICATE-----
@@ -31,6 +31,28 @@ module Net; module SSH; module Multi
31
31
  end
32
32
  end
33
33
 
34
+ # Represents a #forward action.
35
+ class ForwardRecording
36
+ def initialize
37
+ @recordings = []
38
+ end
39
+
40
+ def remote(port, host, remote_port, remote_host="127.0.0.1")
41
+ @recordings << [:remote, port, host, remote_port, remote_host]
42
+ end
43
+
44
+ def replay_on(session)
45
+ forward = session.forward
46
+ @recordings.each {|args| forward.send *args}
47
+ end
48
+ end
49
+
50
+ def forward
51
+ forward = ForwardRecording.new
52
+ @recordings << forward
53
+ forward
54
+ end
55
+
34
56
  # Represents a #send_global_request action.
35
57
  class SendGlobalRequestRecording #:nodoc:
36
58
  attr_reader :type, :extra, :callback
@@ -1,4 +1,5 @@
1
1
  require 'net/ssh'
2
+ require 'timeout'
2
3
 
3
4
  module Net; module SSH; module Multi
4
5
  # Encapsulates the connection information for a single remote server, as well
@@ -425,7 +425,7 @@ module Net; module SSH; module Multi
425
425
  # +false+ (the block returned +false+).
426
426
  def process(wait=nil, &block)
427
427
  realize_pending_connections!
428
- wait = @connect_threads.any? ? 0 : wait
428
+ wait = @connect_threads.any? ? 0 : io_select_wait(wait)
429
429
 
430
430
  return false unless preprocess(&block)
431
431
 
@@ -441,6 +441,15 @@ module Net; module SSH; module Multi
441
441
  end
442
442
  end
443
443
 
444
+ def io_select_wait(wait)
445
+ [wait, keepalive_interval].compact.min
446
+ end
447
+
448
+ def keepalive_interval
449
+ servers = server_list.select { |s| s.options[:keepalive] }
450
+ servers.map { |s| s.options[:keepalive_interval] }.compact.min
451
+ end
452
+
444
453
  # Runs the preprocess stage on all servers. Returns false if the block
445
454
  # returns false, and true if there either is no block, or it returns true.
446
455
  # This is called as part of the #process method.
@@ -7,13 +7,17 @@ module Net; module SSH; module Multi
7
7
  MAJOR = 1
8
8
 
9
9
  # The minor component of the library's version
10
- MINOR = 2
10
+ MINOR = 3
11
11
 
12
12
  # The tiny component of the library's version
13
- TINY = 1
13
+ TINY = 0
14
+
15
+ # The prerelease component of this version of the Net::SSH library
16
+ # nil allowed
17
+ PRE = "rc1"
14
18
 
15
19
  # The library's version as a Version instance
16
- CURRENT = new(MAJOR, MINOR, TINY)
20
+ CURRENT = new(*[MAJOR, MINOR, TINY, PRE].compact)
17
21
 
18
22
  # The library's version as a String instance
19
23
  STRING = CURRENT.to_s
@@ -2,15 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: net-ssh-multi 1.3.0.rc1 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "net-ssh-multi"
8
- s.version = "1.2.1"
9
+ s.version = "1.3.0.rc1"
9
10
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Jamis Buck", "Delano Mandelbaum"]
12
14
  s.cert_chain = ["gem-public_cert.pem"]
13
- s.date = "2015-04-11"
15
+ s.date = "2016-03-24"
14
16
  s.description = "Control multiple Net::SSH connections via a single interface."
15
17
  s.email = "net-ssh@solutious.com"
16
18
  s.extra_rdoc_files = [
@@ -18,6 +20,7 @@ Gem::Specification.new do |s|
18
20
  "README.rdoc"
19
21
  ]
20
22
  s.files = [
23
+ ".travis.yml",
21
24
  "CHANGES.txt",
22
25
  "LICENSE.txt",
23
26
  "README.rdoc",
@@ -45,14 +48,13 @@ Gem::Specification.new do |s|
45
48
  ]
46
49
  s.homepage = "https://github.com/net-ssh/net-scp"
47
50
  s.licenses = ["MIT"]
48
- s.require_paths = ["lib"]
49
51
  s.rubyforge_project = "net-ssh-multi"
50
- s.rubygems_version = "1.8.23"
51
- s.signing_key = "/mnt/gem/gem-private_key.pem"
52
+ s.rubygems_version = "2.4.6"
53
+ s.signing_key = "/mnt/gem/net-ssh-private_key.pem"
52
54
  s.summary = "Control multiple Net::SSH connections via a single interface."
53
55
 
54
56
  if s.respond_to? :specification_version then
55
- s.specification_version = 3
57
+ s.specification_version = 4
56
58
 
57
59
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
60
  s.add_runtime_dependency(%q<net-ssh>, [">= 2.6.5"])
@@ -198,4 +198,25 @@ class SessionTest < Minitest::Test
198
198
  IO.expects(:select).with([:a, :b, :c], [:a, :c], nil, 5).returns([[:b, :c], [:a, :c]])
199
199
  @session.process(5)
200
200
  end
201
+
202
+ def test_process_should_pass_minimum_keepalive_interval_as_io_select_timeout
203
+ @session.use('h1', :keepalive => true)
204
+ @session.use('h2', :keepalive_interval => 1)
205
+ @session.use('h3', :keepalive => true, :keepalive_interval => 2)
206
+ @session.use('h4', :keepalive => true, :keepalive_interval => 3)
207
+ IO.expects(:select).with([], [], nil, 2)
208
+ @session.process
209
+ end
210
+
211
+ def test_process_should_pass_wait_as_io_select_timeout_if_provided_and_minimum
212
+ @session.use('h1', :keepalive => true, :keepalive_interval => 1)
213
+ IO.expects(:select).with([], [], nil, 1)
214
+ @session.process(2)
215
+ end
216
+
217
+ def test_process_should_pass_nil_as_io_select_timeout_by_default
218
+ @session.use('h1')
219
+ IO.expects(:select).with([], [], nil, nil)
220
+ @session.process
221
+ end
201
222
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ssh-multi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
5
- prerelease:
4
+ version: 1.3.0.rc1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jamis Buck
@@ -10,98 +9,83 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain:
13
- - !binary |-
14
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUROakNDQWg2Z0F3SUJB
15
- Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJCTVE4d0RRWURWUVFEREFaa1pX
16
- eGgKYm04eEdUQVhCZ29Ka2lhSmsvSXNaQUVaRmdsemIyeDFkR2x2ZFhNeEV6
17
- QVJCZ29Ka2lhSmsvSXNaQUVaRmdOagpiMjB3SGhjTk1UTXdNakEyTVRFMU56
18
- UTFXaGNOTVRRd01qQTJNVEUxTnpRMVdqQkJNUTh3RFFZRFZRUUREQVprClpX
19
- eGhibTh4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2x6YjJ4MWRHbHZkWE14RXpB
20
- UkJnb0praWFKay9Jc1pBRVoKRmdOamIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFF
21
- QkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEZzFoTXRsMFhzTXVVSwpBS1RnWVd2
22
- M2dqajd2dUVzRTJFalQrdnlCZzgvTHBxVlZ3WnppaWFlYkpUOUlaaVErc0NG
23
- cWJpYWtqMGI1M3BJCmhnMXlPYUJFbUg2L1cwTDdyd3pxYVJWOXNXMWVKczlK
24
- eEZZUUNuZDY3elVuemo4bm5SbE9qRytoaElHK1ZzaWoKbnBzR2J0MjhwZWZ1
25
- TlpKak81cTJjbEFsZlNuaUlJSGZJc1U3L1N0RVl1NkZVR09qbndyeVowcjV5
26
- SmxyOVJyRQpHcytxMERXOFFuWjlVcEFmdURGUVp1SXFlS1FGRkxFN25NbUNH
27
- YUErMEJOMW5MbDNmVkhOYkxIcTdBdms4K1orClp1dXZrZHNjYkhsTy9sKzN4
28
- Q05RNW5Vbkh3cTBBREFiTUxPbG1pWVl6cVhvV0xqbWVJNm1lL2Nsa3RKQ2ZO
29
- MlIKb1pHM1VRdnZBZ01CQUFHak9UQTNNQWtHQTFVZEV3UUNNQUF3SFFZRFZS
30
- ME9CQllFRk1TSk9FdEh6RTRsMGF6dgpNMEpLMGtLTlRvSzFNQXNHQTFVZER3
31
- UUVBd0lFc0RBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQXRPZEU3M3F4Ck9I
32
- MnlkaTlvVDJoUzVmOUcweTFaNzBUbHdoK1ZHRXh5Znh6VkU5WHdDK2lQcEp4
33
- TnJhaUhZZ0YvOS9va3k3WloKUjlxMC90Sm5ldWhBZW5aZGlRa1g3b2k0TzN2
34
- OXdSUzZZSG9XQnhNUEZLVlJMTlR6dlZKc2JtZnBDQWxwNS81ZwpwczR3UUZ5
35
- NW1pYkVsR1ZsT29iZi9naHFaMjVIUzlKNmtkMC9DL3J5MEFVdFRvZ3NMN1R4
36
- R3dUNGtiQ3g2M3ViCjN2eXdFRWhzSlV6ZmQ5N0dDQUJtdFFmUlRsZFgvajdG
37
- MXovNXdkOHAraGZkb3gxaWliZHM5WnRmYVpBM0t6S24Ka2NoV045QjZ6Zzly
38
- MVhNUThCTTJKejBYb1BhblBlMzU0K2xXd2pwa1JLYkZvdy9aYlFIY0NMQ3Ey
39
- NCtONmI2ZwpkZ0tmTkR6d2lEcHFDQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
40
- LS0tLS0K
41
- date: 2015-04-11 00:00:00.000000000 Z
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRAwDgYDVQQDDAduZXQt
15
+ c3NoMRkwFwYKCZImiZPyLGQBGRYJc29sdXRpb3VzMRMwEQYKCZImiZPyLGQBGRYD
16
+ Y29tMB4XDTE1MTIwNjIxMDYyNFoXDTE2MTIwNTIxMDYyNFowQjEQMA4GA1UEAwwH
17
+ bmV0LXNzaDEZMBcGCgmSJomT8ixkARkWCXNvbHV0aW91czETMBEGCgmSJomT8ixk
18
+ ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMYnhNtn0f6p
19
+ nTylB8mE8lMdoMLJC8KwpMWsvk73Pe2WVDsH/OSwwwz6oUGk1i70cJyDjIEBNpwT
20
+ 88GpVXJSumvqVsf9fCg3mWNeb5t0J+aeNm9MIvYVMTqj5tydoXQiwnILRDYHV9tZ
21
+ 1c3o59/VlahSTpZ7YEgzVufpAkvEGkbJiG849exiipK7MN/ZIkMOxYVnyRXk43Xc
22
+ 6GYlsHOfSgPwcXwW5g57DCwLQLWrjDsTka28dxDmO7B5Lv5EqzINxVxWsu43OgZG
23
+ 21Io/jIyf5PNpeKPKNGDuAQJ8mvdMYBJoDhtCwgsUYbl0BZzA7g4ytl51HtIeP+j
24
+ Qp/eAvs/RrECAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUBfKiwO2eM4NE
25
+ iRrVG793qEPLYyMwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQCfZFdb
26
+ p4jzkfIzGDbiOxd0R8sdqJoC4nMLEgnQ7dLulawwA3IXe3sHAKgA5kmH3prsKc5H
27
+ zVmM5NlH2P1nRbegIkQTYiIod1hZQCNxdmVG/fprMqPq0ybpUOjjrP5pj0OtszE1
28
+ F2dQia1hOEstMR+n0nAtWII9HJAEyeZjVV0s2Cl7Pt85XJ3hxFcCKwzqsK5xRI7a
29
+ B3vwh3/JJYrFonIohQ//Lg9qTZASEkoKLlq1/hFeICoCGGIGLq45ZB7CzXLooCKi
30
+ s/ZUKye79ELwFYKJOhjW5g725OL3hy+llhEleytwKRwgXFQBPTC4f5UkdxZVVWGH
31
+ e2C9M1m/2odPZo8h
32
+ -----END CERTIFICATE-----
33
+ date: 2016-03-24 00:00:00.000000000 Z
42
34
  dependencies:
43
35
  - !ruby/object:Gem::Dependency
44
36
  name: net-ssh
45
37
  requirement: !ruby/object:Gem::Requirement
46
- none: false
47
38
  requirements:
48
- - - ! '>='
39
+ - - ">="
49
40
  - !ruby/object:Gem::Version
50
41
  version: 2.6.5
51
42
  type: :runtime
52
43
  prerelease: false
53
44
  version_requirements: !ruby/object:Gem::Requirement
54
- none: false
55
45
  requirements:
56
- - - ! '>='
46
+ - - ">="
57
47
  - !ruby/object:Gem::Version
58
48
  version: 2.6.5
59
49
  - !ruby/object:Gem::Dependency
60
50
  name: net-ssh-gateway
61
51
  requirement: !ruby/object:Gem::Requirement
62
- none: false
63
52
  requirements:
64
- - - ! '>='
53
+ - - ">="
65
54
  - !ruby/object:Gem::Version
66
55
  version: 1.2.0
67
56
  type: :runtime
68
57
  prerelease: false
69
58
  version_requirements: !ruby/object:Gem::Requirement
70
- none: false
71
59
  requirements:
72
- - - ! '>='
60
+ - - ">="
73
61
  - !ruby/object:Gem::Version
74
62
  version: 1.2.0
75
63
  - !ruby/object:Gem::Dependency
76
64
  name: minitest
77
65
  requirement: !ruby/object:Gem::Requirement
78
- none: false
79
66
  requirements:
80
- - - ! '>='
67
+ - - ">="
81
68
  - !ruby/object:Gem::Version
82
69
  version: '0'
83
70
  type: :development
84
71
  prerelease: false
85
72
  version_requirements: !ruby/object:Gem::Requirement
86
- none: false
87
73
  requirements:
88
- - - ! '>='
74
+ - - ">="
89
75
  - !ruby/object:Gem::Version
90
76
  version: '0'
91
77
  - !ruby/object:Gem::Dependency
92
78
  name: mocha
93
79
  requirement: !ruby/object:Gem::Requirement
94
- none: false
95
80
  requirements:
96
- - - ! '>='
81
+ - - ">="
97
82
  - !ruby/object:Gem::Version
98
83
  version: '0'
99
84
  type: :development
100
85
  prerelease: false
101
86
  version_requirements: !ruby/object:Gem::Requirement
102
- none: false
103
87
  requirements:
104
- - - ! '>='
88
+ - - ">="
105
89
  - !ruby/object:Gem::Version
106
90
  version: '0'
107
91
  description: Control multiple Net::SSH connections via a single interface.
@@ -112,6 +96,7 @@ extra_rdoc_files:
112
96
  - LICENSE.txt
113
97
  - README.rdoc
114
98
  files:
99
+ - ".travis.yml"
115
100
  - CHANGES.txt
116
101
  - LICENSE.txt
117
102
  - README.rdoc
@@ -139,26 +124,25 @@ files:
139
124
  homepage: https://github.com/net-ssh/net-scp
140
125
  licenses:
141
126
  - MIT
127
+ metadata: {}
142
128
  post_install_message:
143
129
  rdoc_options: []
144
130
  require_paths:
145
131
  - lib
146
132
  required_ruby_version: !ruby/object:Gem::Requirement
147
- none: false
148
133
  requirements:
149
- - - ! '>='
134
+ - - ">="
150
135
  - !ruby/object:Gem::Version
151
136
  version: '0'
152
137
  required_rubygems_version: !ruby/object:Gem::Requirement
153
- none: false
154
138
  requirements:
155
- - - ! '>='
139
+ - - ">"
156
140
  - !ruby/object:Gem::Version
157
- version: '0'
141
+ version: 1.3.1
158
142
  requirements: []
159
143
  rubyforge_project: net-ssh-multi
160
- rubygems_version: 1.8.23
144
+ rubygems_version: 2.4.6
161
145
  signing_key:
162
- specification_version: 3
146
+ specification_version: 4
163
147
  summary: Control multiple Net::SSH connections via a single interface.
164
148
  test_files: []
metadata.gz.sig CHANGED
Binary file