kanrisuru 0.9.2 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +9 -9
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +7 -8
  4. data/.rspec +1 -1
  5. data/CHANGELOG.md +125 -96
  6. data/CODE_OF_CONDUCT.md +10 -10
  7. data/README.md +19 -90
  8. data/kanrisuru.gemspec +2 -1
  9. data/lib/kanrisuru/command.rb +7 -0
  10. data/lib/kanrisuru/core/archive.rb +13 -36
  11. data/lib/kanrisuru/core/disk.rb +0 -3
  12. data/lib/kanrisuru/core/dmi.rb +1 -1
  13. data/lib/kanrisuru/core/file.rb +4 -11
  14. data/lib/kanrisuru/core/find.rb +6 -11
  15. data/lib/kanrisuru/core/mount.rb +14 -15
  16. data/lib/kanrisuru/core/socket.rb +2 -1
  17. data/lib/kanrisuru/core/stream.rb +1 -2
  18. data/lib/kanrisuru/core/zypper.rb +6 -23
  19. data/lib/kanrisuru/os_package/collection.rb +58 -0
  20. data/lib/kanrisuru/os_package/define.rb +34 -0
  21. data/lib/kanrisuru/os_package/include.rb +163 -0
  22. data/lib/kanrisuru/os_package.rb +3 -245
  23. data/lib/kanrisuru/remote/cpu.rb +5 -1
  24. data/lib/kanrisuru/remote/env.rb +8 -0
  25. data/lib/kanrisuru/remote/fstab.rb +5 -5
  26. data/lib/kanrisuru/result.rb +5 -4
  27. data/lib/kanrisuru/util.rb +1 -1
  28. data/lib/kanrisuru/version.rb +1 -1
  29. data/spec/functional/core/apt_spec.rb +22 -30
  30. data/spec/functional/core/archive_spec.rb +170 -0
  31. data/spec/functional/core/find_spec.rb +94 -113
  32. data/spec/functional/core/mount_spec.rb +121 -0
  33. data/spec/functional/core/socket_spec.rb +23 -28
  34. data/spec/functional/core/stream_spec.rb +12 -12
  35. data/spec/functional/core/transfer_spec.rb +108 -131
  36. data/spec/functional/core/yum_spec.rb +58 -83
  37. data/spec/functional/remote/cluster_spec.rb +11 -2
  38. data/spec/functional/remote/cpu_spec.rb +104 -0
  39. data/spec/functional/remote/env_spec.rb +48 -0
  40. data/spec/helper/stub_network.rb +49 -14
  41. data/spec/helper/test_hosts.rb +11 -1
  42. data/spec/integration/core/apt_spec.rb +2 -3
  43. data/spec/integration/core/archive_spec.rb +8 -13
  44. data/spec/integration/core/disk_spec.rb +2 -3
  45. data/spec/integration/core/dmi_spec.rb +2 -3
  46. data/spec/integration/core/file_spec.rb +4 -14
  47. data/spec/integration/core/find_spec.rb +3 -3
  48. data/spec/integration/core/group_spec.rb +2 -3
  49. data/spec/integration/core/ip_spec.rb +2 -3
  50. data/spec/integration/core/path_spec.rb +2 -3
  51. data/spec/integration/core/socket_spec.rb +2 -4
  52. data/spec/integration/core/stat_spec.rb +2 -3
  53. data/spec/integration/core/stream_spec.rb +6 -9
  54. data/spec/integration/core/system_spec.rb +2 -4
  55. data/spec/integration/core/transfer_spec.rb +4 -9
  56. data/spec/integration/core/user_spec.rb +2 -4
  57. data/spec/integration/core/yum_spec.rb +2 -3
  58. data/spec/integration/core/zypper_spec.rb +5 -6
  59. data/spec/{functional → integration}/os_package_spec.rb +0 -0
  60. data/spec/integration/remote/cpu_spec.rb +2 -3
  61. data/spec/integration/remote/env_spec.rb +2 -3
  62. data/spec/integration/remote/fstab_spec.rb +2 -3
  63. data/spec/integration/remote/host_spec.rb +2 -3
  64. data/spec/integration/remote/memory_spec.rb +2 -2
  65. data/spec/integration/remote/os_spec.rb +2 -3
  66. data/spec/integration/remote/remote_file_spec.rb +9 -15
  67. data/spec/spec_helper.rb +12 -3
  68. data/spec/unit/command_spec.rb +49 -0
  69. data/spec/unit/core/find_spec.rb +1 -1
  70. data/spec/unit/core/yum_spec.rb +1 -1
  71. data/spec/unit/mode_spec.rb +33 -2
  72. data/spec/unit/remote/cluster_spec.rb +3 -1
  73. data/spec/unit/remote/cpu_spec.rb +1 -2
  74. data/spec/unit/remote/env_spec.rb +17 -0
  75. data/spec/unit/util_spec.rb +13 -0
  76. metadata +28 -5
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Kanrisuru::Remote::Fstab do
4
- TestHosts.each_os do |os_name|
3
+ TestHosts.each_os do |os_name. host_json|
4
+ RSpec.describe Kanrisuru::Remote::Fstab do
5
5
  context "with #{os_name}" do
6
- let(:host_json) { TestHosts.host(os_name) }
7
6
  let(:host) do
8
7
  Kanrisuru::Remote::Host.new(
9
8
  host: host_json['hostname'],
@@ -2,10 +2,9 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe Kanrisuru::Remote::Host do
6
- TestHosts.each_os do |os_name|
5
+ TestHosts.each_os do |os_name, host_json|
6
+ RSpec.describe Kanrisuru::Remote::Host do
7
7
  context "with #{os_name}" do
8
- let(:host_json) { TestHosts.host(os_name) }
9
8
  let(:host) do
10
9
  described_class.new(
11
10
  host: host_json['hostname'],
@@ -2,8 +2,8 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe Kanrisuru::Remote::Memory do
6
- TestHosts.each_os do |os_name|
5
+ TestHosts.each_os do |os_name|
6
+ RSpec.describe Kanrisuru::Remote::Memory do
7
7
  context "with #{os_name}" do
8
8
  let(:host_json) { TestHosts.host(os_name) }
9
9
  let(:host) do
@@ -2,10 +2,9 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- RSpec.describe Kanrisuru::Remote::Os do
6
- TestHosts.each_os do |os_name|
5
+ TestHosts.each_os do |os_name, host_json|
6
+ RSpec.describe Kanrisuru::Remote::Os do
7
7
  context "with #{os_name}" do
8
- let(:host_json) { TestHosts.host(os_name) }
9
8
  let(:host) do
10
9
  Kanrisuru::Remote::Host.new(
11
10
  host: host_json['hostname'],
@@ -1,29 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Kanrisuru::Remote::File do
4
- module Kanrisuru
5
- module Remote
6
- Class.new(File) do
7
- READ_FILE_SIZE = 25_000
8
- end
3
+ module Kanrisuru
4
+ module Remote
5
+ Class.new(File) do
6
+ READ_FILE_SIZE = 25_000
9
7
  end
10
8
  end
9
+ end
11
10
 
12
- TestHosts.each_os do |os_name|
11
+ TestHosts.each_os do |os_name, host_json, spec_dir|
12
+ RSpec.describe Kanrisuru::Remote::File do
13
13
  context "with #{os_name}" do
14
14
  before(:all) do
15
- host_json = TestHosts.host(os_name)
16
15
  host = Kanrisuru::Remote::Host.new(
17
16
  host: host_json['hostname'],
18
17
  username: host_json['username'],
19
18
  keys: [host_json['ssh_key']]
20
19
  )
21
20
 
22
- host.mkdir("#{host_json['home']}/.kanrisuru_spec_files", silent: true)
21
+ host.mkdir(spec_dir, silent: true)
23
22
  host.disconnect
24
23
  end
25
24
 
26
- let(:host_json) { TestHosts.host(os_name) }
27
25
  let(:host) do
28
26
  Kanrisuru::Remote::Host.new(
29
27
  host: host_json['hostname'],
@@ -32,22 +30,18 @@ RSpec.describe Kanrisuru::Remote::File do
32
30
  )
33
31
  end
34
32
 
35
- let(:spec_dir) { "#{host_json['home']}/.kanrisuru_spec_files" }
36
-
37
33
  after do
38
34
  host.disconnect
39
35
  end
40
36
 
41
37
  after(:all) do
42
- host_json = TestHosts.host(os_name)
43
38
  host = Kanrisuru::Remote::Host.new(
44
39
  host: host_json['hostname'],
45
40
  username: host_json['username'],
46
41
  keys: [host_json['ssh_key']]
47
42
  )
48
43
 
49
- host.rmdir("#{host_json['home']}/.kanrisuru_spec_files")
50
- host.rmdir("#{host_json['home']}/extract-tar-files") if host.dir?("#{host_json['home']}/extract-tar-files")
44
+ host.rmdir(spec_dir)
51
45
  host.disconnect
52
46
  end
53
47
 
data/spec/spec_helper.rb CHANGED
@@ -1,10 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'simplecov'
4
- SimpleCov.start
5
-
6
4
  require 'simplecov-cobertura'
7
- SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ SimpleCov::Formatter::CoberturaFormatter
9
+ ])
10
+
11
+ SimpleCov.use_merging true
12
+ SimpleCov.command_name("kanrisuru-tests" + (ENV['TEST_ENV_NUMBER'] || ''))
13
+
14
+ SimpleCov.start
8
15
 
9
16
  require 'kanrisuru'
10
17
 
@@ -21,6 +28,8 @@ RSpec.configure do |config|
21
28
  # Disable RSpec exposing methods globally on `Module` and `main`
22
29
  config.disable_monkey_patching!
23
30
 
31
+ config.silence_filter_announcements = true if ENV['TEST_ENV_NUMBER']
32
+
24
33
  config.expect_with :rspec do |c|
25
34
  c.syntax = :expect
26
35
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Command do
6
+ it 'responds to methods' do
7
+ command = described_class.new('ls')
8
+ expect(command).to respond_to(:exit_status)
9
+ expect(command).to respond_to(:raw_result)
10
+ expect(command).to respond_to(:program)
11
+ expect(command).to respond_to(:success?)
12
+ expect(command).to respond_to(:failure?)
13
+ expect(command).to respond_to(:to_i)
14
+ expect(command).to respond_to(:to_s)
15
+ expect(command).to respond_to(:to_a)
16
+ expect(command).to respond_to(:to_json)
17
+ expect(command).to respond_to(:prepared_command)
18
+ expect(command).to respond_to(:raw_command)
19
+ expect(command).to respond_to(:handle_status)
20
+ expect(command).to respond_to(:handle_data)
21
+ expect(command).to respond_to(:handle_signal)
22
+ expect(command).to respond_to(:+)
23
+ expect(command).to respond_to(:<<)
24
+ expect(command).to respond_to(:|)
25
+ expect(command).to respond_to(:pipe)
26
+ expect(command).to respond_to(:append_value)
27
+ expect(command).to respond_to(:append_arg)
28
+ expect(command).to respond_to(:append_flag)
29
+ expect(command).to respond_to(:append_valid_exit_code)
30
+ end
31
+
32
+ it 'does not append nil array values' do
33
+ command = described_class.new('hello')
34
+ command.append_array(nil)
35
+ expect(command.raw_command).to eq('hello')
36
+ end
37
+
38
+ it 'appends string array values' do
39
+ command = described_class.new('ls')
40
+ command.append_array('/etc')
41
+ expect(command.raw_command).to eq('ls /etc')
42
+ end
43
+
44
+ it 'appends array values' do
45
+ command = described_class.new('ls')
46
+ command.append_array(['/proc/', '/etc', '/var', '/dev'])
47
+ expect(command.raw_command).to eq('ls /proc/ /etc /var /dev')
48
+ end
49
+ end
@@ -26,7 +26,7 @@ RSpec.describe Kanrisuru::Core::Find do
26
26
  it 'responds to find fields' do
27
27
  expect(Kanrisuru::Core::Find::FilePath.new).to respond_to(:path)
28
28
  expect(Kanrisuru::Core::Find::REGEX_TYPES).to(
29
- eq(['emacs', 'posix-awk', 'posix-basic', 'posix-egrep', 'posix-extended'])
29
+ eq(%w[emacs posix-awk posix-basic posix-egrep posix-extended])
30
30
  )
31
31
  end
32
32
  end
@@ -22,7 +22,7 @@ RSpec.describe Kanrisuru::Core::Yum do
22
22
  it 'responds to methods' do
23
23
  expect(host).to respond_to(:yum)
24
24
  end
25
-
25
+
26
26
  it 'responds to yum fields' do
27
27
  expect(Kanrisuru::Core::Yum::PackageOverview.new).to respond_to(
28
28
  :package, :architecture, :version, :installed
@@ -3,6 +3,18 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Mode do
6
+ it 'responds to methods' do
7
+ mode = described_class.new('644')
8
+ expect(mode).to respond_to(:directory?)
9
+ expect(mode).to respond_to(:symbolic)
10
+ expect(mode).to respond_to(:symbolic=)
11
+ expect(mode).to respond_to(:numeric)
12
+ expect(mode).to respond_to(:numeric=)
13
+ expect(mode).to respond_to(:inspect)
14
+ expect(mode).to respond_to(:to_s)
15
+ expect(mode).to respond_to(:to_i)
16
+ end
17
+
6
18
  it 'parses int mode' do
7
19
  mode = described_class.new('644')
8
20
  expect(mode.directory?).to eq(false)
@@ -80,9 +92,9 @@ RSpec.describe Kanrisuru::Mode do
80
92
  expect(mode.other.to_i).to eq(7)
81
93
  expect(mode.other.symbolic).to eq('rwx')
82
94
 
83
- mode = described_class.new("---x--x--x")
95
+ mode = described_class.new('---x--x--x')
84
96
  expect(mode.directory?).to eq(false)
85
- expect(mode.numeric).to eq("111")
97
+ expect(mode.numeric).to eq('111')
86
98
 
87
99
  expect(mode.owner.read?).to eq(false)
88
100
  expect(mode.owner.write?).to eq(false)
@@ -205,4 +217,23 @@ RSpec.describe Kanrisuru::Mode do
205
217
  mode.symbolic = '-w'
206
218
  expect(mode.symbolic).to eq('---xr-xr--')
207
219
  end
220
+
221
+ context Kanrisuru::Mode::Permission do
222
+ it 'responds to methods' do
223
+ mode = Kanrisuru::Mode::Permission.new('644', 'rw-rw-r--')
224
+ expect(mode).to respond_to(:to_i)
225
+ expect(mode).to respond_to(:to_s)
226
+ expect(mode).to respond_to(:all?)
227
+ expect(mode).to respond_to(:numeric)
228
+ expect(mode).to respond_to(:numeric=)
229
+ expect(mode).to respond_to(:symbolic=)
230
+ expect(mode).to respond_to(:symbolic)
231
+ expect(mode).to respond_to(:read=)
232
+ expect(mode).to respond_to(:read?)
233
+ expect(mode).to respond_to(:write=)
234
+ expect(mode).to respond_to(:write?)
235
+ expect(mode).to respond_to(:execute=)
236
+ expect(mode).to respond_to(:execute?)
237
+ end
238
+ end
208
239
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Kanrisuru::Remote::Cluster do
2
4
  before(:all) do
3
5
  StubNetwork.stub!
@@ -16,7 +18,7 @@ RSpec.describe Kanrisuru::Remote::Cluster do
16
18
  end
17
19
 
18
20
  it 'responds to methods' do
19
- cluster = Kanrisuru::Remote::Cluster.new(host1)
21
+ cluster = described_class.new(host1)
20
22
  expect(cluster).to respond_to(:hosts)
21
23
  expect(cluster).to respond_to(:[])
22
24
  expect(cluster).to respond_to(:<<)
@@ -20,8 +20,7 @@ RSpec.describe Kanrisuru::Remote::Cpu do
20
20
  end
21
21
 
22
22
  it 'responds to methods' do
23
- cpu = Kanrisuru::Remote::Cpu.new(host)
24
-
23
+ cpu = described_class.new(host)
25
24
  expect(cpu).to respond_to(:load_average)
26
25
  expect(cpu).to respond_to(:load_average1)
27
26
  expect(cpu).to respond_to(:load_average5)
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Remote::Env do
6
+ it 'responds to methods' do
7
+ env = described_class.new
8
+ expect(env).to respond_to(:to_h)
9
+ expect(env).to respond_to(:to_s)
10
+ expect(env).to respond_to(:clear)
11
+ expect(env).to respond_to(:count)
12
+ expect(env).to respond_to(:count)
13
+ expect(env).to respond_to(:delete)
14
+ expect(env).to respond_to(:[])
15
+ expect(env).to respond_to(:[]=)
16
+ end
17
+ end
@@ -84,6 +84,10 @@ RSpec.describe Kanrisuru::Util do
84
84
  expect { Kanrisuru::Util::Bits.convert_bytes(100, :kilobytee, :kilobit) }.to raise_error(ArgumentError)
85
85
  end
86
86
 
87
+ it 'gets invalid signal type' do
88
+ expect { Kanrisuru::Util::Signal[{ 'Hello' => 'World' }] }.to raise_error(ArgumentError)
89
+ end
90
+
87
91
  it 'translates signal from string to numeric' do
88
92
  expect(Kanrisuru::Util::Signal['HUP']).to eq(1)
89
93
  expect(Kanrisuru::Util::Signal['INT']).to eq(2)
@@ -214,6 +218,10 @@ RSpec.describe Kanrisuru::Util do
214
218
  expect(Kanrisuru::Util::Signal[64]).to eq('RTMAX')
215
219
  end
216
220
 
221
+ it 'gets invalid dmi type' do
222
+ expect { Kanrisuru::Util::DmiType[{ 'Hello' => 'World' }] }.to raise_error(ArgumentError)
223
+ end
224
+
217
225
  it 'translates dmi types from string to integer' do
218
226
  expect(Kanrisuru::Util::DmiType['BIOS']).to eq(0)
219
227
  expect(Kanrisuru::Util::DmiType['System']).to eq(1)
@@ -308,6 +316,11 @@ RSpec.describe Kanrisuru::Util do
308
316
  expect(Kanrisuru::Util::DmiType[43]).to eq('TPM Device')
309
317
  end
310
318
 
319
+ it 'gets fs_mount options' do
320
+ expect(Kanrisuru::Util::FsMountOpts.get_device('common')[:async]).to eq('boolean')
321
+ expect(Kanrisuru::Util::FsMountOpts.get_device_opt(:ext4, :acl)).to eq('boolean')
322
+ end
323
+
311
324
  it 'converts power' do
312
325
  expect(Kanrisuru::Util::Bits.convert_power(:deca, :deca)).to eq(0)
313
326
  expect(Kanrisuru::Util::Bits.convert_power(:deca, :kilo)).to eq(-1)
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanrisuru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Mammina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-01 00:00:00.000000000 Z
11
+ date: 2021-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: parallel_tests
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.7'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +137,7 @@ dependencies:
123
137
  - !ruby/object:Gem::Version
124
138
  version: '6.1'
125
139
  description: Kanrisuru helps manage remote servers with objected oriented ruby. Results
126
- come back as structured data, parsed, prepared and ready .
140
+ come back as structured data, parsed, prepared and ready.
127
141
  email: ryan@avamia.com
128
142
  executables: []
129
143
  extensions: []
@@ -170,6 +184,9 @@ files:
170
184
  - lib/kanrisuru/logger.rb
171
185
  - lib/kanrisuru/mode.rb
172
186
  - lib/kanrisuru/os_package.rb
187
+ - lib/kanrisuru/os_package/collection.rb
188
+ - lib/kanrisuru/os_package/define.rb
189
+ - lib/kanrisuru/os_package/include.rb
173
190
  - lib/kanrisuru/remote.rb
174
191
  - lib/kanrisuru/remote/cluster.rb
175
192
  - lib/kanrisuru/remote/cpu.rb
@@ -189,15 +206,18 @@ files:
189
206
  - lib/kanrisuru/util/signal.rb
190
207
  - lib/kanrisuru/version.rb
191
208
  - spec/functional/core/apt_spec.rb
209
+ - spec/functional/core/archive_spec.rb
192
210
  - spec/functional/core/find_spec.rb
211
+ - spec/functional/core/mount_spec.rb
193
212
  - spec/functional/core/path_spec.rb
194
213
  - spec/functional/core/socket_spec.rb
195
214
  - spec/functional/core/stat_spec.rb
196
215
  - spec/functional/core/stream_spec.rb
197
216
  - spec/functional/core/transfer_spec.rb
198
217
  - spec/functional/core/yum_spec.rb
199
- - spec/functional/os_package_spec.rb
200
218
  - spec/functional/remote/cluster_spec.rb
219
+ - spec/functional/remote/cpu_spec.rb
220
+ - spec/functional/remote/env_spec.rb
201
221
  - spec/helper/expect_helpers.rb
202
222
  - spec/helper/stub_network.rb
203
223
  - spec/helper/test_hosts.rb
@@ -219,6 +239,7 @@ files:
219
239
  - spec/integration/core/user_spec.rb
220
240
  - spec/integration/core/yum_spec.rb
221
241
  - spec/integration/core/zypper_spec.rb
242
+ - spec/integration/os_package_spec.rb
222
243
  - spec/integration/remote/cluster_spec.rb
223
244
  - spec/integration/remote/cpu_spec.rb
224
245
  - spec/integration/remote/env_spec.rb
@@ -228,6 +249,7 @@ files:
228
249
  - spec/integration/remote/os_spec.rb
229
250
  - spec/integration/remote/remote_file_spec.rb
230
251
  - spec/spec_helper.rb
252
+ - spec/unit/command_spec.rb
231
253
  - spec/unit/core/apt_spec.rb
232
254
  - spec/unit/core/archive_spec.rb
233
255
  - spec/unit/core/disk_spec.rb
@@ -248,6 +270,7 @@ files:
248
270
  - spec/unit/mode_spec.rb
249
271
  - spec/unit/remote/cluster_spec.rb
250
272
  - spec/unit/remote/cpu_spec.rb
273
+ - spec/unit/remote/env_spec.rb
251
274
  - spec/unit/remote/fstab_spec.rb
252
275
  - spec/unit/template_spec.rb
253
276
  - spec/unit/util_spec.rb
@@ -273,7 +296,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
273
296
  - !ruby/object:Gem::Version
274
297
  version: '0'
275
298
  requirements: []
276
- rubygems_version: 3.1.2
299
+ rubygems_version: 3.2.32
277
300
  signing_key:
278
301
  specification_version: 4
279
302
  summary: Manage remote servers over ssh with ruby.