xchan.rb 0.17.2 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9ce716f918994e2481e8fbd333dbdb7e0b258341a09e32d464a54a2331edbd09
4
- data.tar.gz: f17d86bf4004ca1ebef87950ff9d20c7aaad29940e8c031ff84d817ade3adeb9
3
+ metadata.gz: 49c3ec314ad19f47d91dd30c854e94ad184fd70a0cb5ed7fd0139b506b295c6e
4
+ data.tar.gz: 1ba90eb765464330c3c6c35385c6ce6732f0bd95cd21e85be236576b7a0ba7c5
5
5
  SHA512:
6
- metadata.gz: c77e364ea0f6365d4fddae810cd14e999cf584dd301e5a651a5565d78fcce157909f0b96a155f67f8f22bb50f1c7d5c2535653e4871f2e5dab862c1e38f207f3
7
- data.tar.gz: a4f2d57cf1843407d7056c4528d7e41372ed84378e33f6ca2777b6b2dde93b80fe5e57d33d2b01337a089d808b11e3e6d92c91b4f57f86aeefc4a3e4782c6afa
6
+ metadata.gz: d29f66b50713d1277b25ad2900bbcd5a99ac1589a921e0b0a8ccd2028e534204ffc8a382b68f3ba48947aa2be8fda90843adda2fbdf133db3cf9fb230f2a5873
7
+ data.tar.gz: 218b603663b0cac0af9c6780e942c74decb096045e9a7eef14daf5c6644286bd2ee8e1969445260952425bfad08b4bd2fb588a6a1d1f3be0b45d0913337575b5
@@ -12,7 +12,7 @@ jobs:
12
12
  fail-fast: false
13
13
  matrix:
14
14
  os: [ubuntu-latest, macos-latest]
15
- ruby: [3.1, 3.2, 3.3]
15
+ ruby: [3.2, 3.3]
16
16
  runs-on: ${{ matrix.os }}
17
17
  steps:
18
18
  - uses: actions/checkout@v2
@@ -20,7 +20,7 @@ jobs:
20
20
  with:
21
21
  ruby-version: ${{ matrix.ruby }}
22
22
  - run: bundle install
23
- - run: SERIALIZER=marshal bundle exec rake
24
- - run: SERIALIZER=json bundle exec rake
25
- - run: SERIALIZER=yaml bundle exec rake
26
- - run: SERIALIZER=pure bundle exec rake
23
+ - run: SERIALIZER=marshal; for t in *_test.rb; do ruby test/${t}; done
24
+ - run: SERIALIZER=json; for t in *_test.rb; do ruby test/${t}; done
25
+ - run: SERIALIZER=yaml; for t in *_test.rb; do ruby test/${t}; done
26
+ - run: SERIALIZER=pure; for t in *_test.rb; do ruby test/${t}; done
data/.projectile CHANGED
@@ -1,4 +1,5 @@
1
- +.
1
+ +/
2
+ +/.github/
2
3
  -/doc/
3
4
  -/.yardoc/
4
5
  -/.gems/
data/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  xchan.rb is an easy to use library for InterProcess
4
4
  Communication (IPC). The library provides a channel
5
- that can transfer Ruby objects between Ruby processes
6
- with a parent <-> child relationship.
5
+ that can help facilitate communication between Ruby
6
+ processes who have a parent &lt;=&gt; child relationship.
7
7
 
8
8
  ## Examples
9
9
 
@@ -11,30 +11,25 @@ with a parent <-> child relationship.
11
11
 
12
12
  #### Options
13
13
 
14
- The first argument given to xchan is the serializer
15
- that it should use. A channel that will communicate
16
- in pure strings (ie with no serialization) is
17
- available as `xchan(:pure)`.
18
-
19
- Otherwise, when a channel is written to or read from,
20
- a Ruby object is serialized (on write) or deserialized
21
- (on read). The serializers available to choose from
22
- are `xchan(:marshal)`, `xchan(:json)`, and `xchan(:yaml)`.
23
- The example uses
24
- [`Marshal`](https://www.rubydoc.info/stdlib/core/Marshal):
14
+ The first argument provided to xchan is the serializer
15
+ that should be used. A channel that will communicate
16
+ purely in strings (in other words: without serialization)
17
+ is available as `xchan(:pure)` - otherwise a wide range of
18
+ serializers are available by default: `xchan(:marshal)`,
19
+ `xchan(:json)`, and `xchan(:yaml)`.
25
20
 
26
21
  ```ruby
27
22
  require "xchan"
28
23
 
29
24
  ##
30
- # This channel uses Marshal to serialize objects
25
+ # Marshal as the serializer
31
26
  ch = xchan(:marshal)
32
27
  Process.wait fork { ch.send(5) }
33
- print "There are ", ch.recv + 7, " disciples and the same number of tribes", "\n"
28
+ print "#{ch.recv} + 7 = 12", "\n"
34
29
  ch.close
35
30
 
36
31
  ##
37
- # There are 12 disciples and the same number of tribes
32
+ # 5 + 7 = 12
38
33
  ```
39
34
 
40
35
  ### Read operations
@@ -184,7 +179,7 @@ print "The maximum size of a single message is: ", sndbuf.int, " bytes.\n"
184
179
  ## Documentation
185
180
 
186
181
  A complete API reference is available at
187
- [0x1eef.github.io/x/xchan.rb](https://0x1eef.github.io/x/xchan.rb/).
182
+ [0x1eef.github.io/x/xchan.rb](https://0x1eef.github.io/x/xchan.rb/)
188
183
 
189
184
  ## Install
190
185
 
@@ -194,11 +189,11 @@ xchan.rb can be installed via rubygems.org:
194
189
 
195
190
  ## Sources
196
191
 
197
- * [Source code (GitHub)](https://github.com/0x1eef/xchan.rb#readme)
198
- * [Source code (GitLab)](https://gitlab.com/0x1eef/xchan.rb#about)
192
+ * [GitHub](https://github.com/0x1eef/xchan.rb#readme)
193
+ * [GitLab](https://gitlab.com/0x1eef/xchan.rb#about)
199
194
 
200
- ## <a id="license"> License </a>
195
+ ## License
201
196
 
202
- [BSD Zero Clause](https://choosealicense.com/licenses/0bsd/).
197
+ [BSD Zero Clause](https://choosealicense.com/licenses/0bsd/)
203
198
  <br>
204
- See [LICENSE](./LICENSE).
199
+ See [LICENSE](./LICENSE)
data/lib/xchan/bytes.rb CHANGED
@@ -95,6 +95,6 @@ class Chan::Bytes
95
95
  end
96
96
 
97
97
  def deserialize(bytes)
98
- JSON.load(bytes)
98
+ JSON.parse(bytes)
99
99
  end
100
100
  end
data/lib/xchan/counter.rb CHANGED
@@ -57,6 +57,6 @@ class Chan::Counter
57
57
  end
58
58
 
59
59
  def deserialize(bytes)
60
- JSON.load(bytes)
60
+ JSON.parse(bytes)
61
61
  end
62
62
  end
@@ -1,5 +1,7 @@
1
- require 'delegate'
2
- require 'tmpdir'
1
+ # frozen_string_literal: true
2
+
3
+ require "delegate"
4
+ require "tmpdir"
3
5
 
4
6
  ##
5
7
  # @private
@@ -63,12 +65,12 @@ class Chan::Tempfile < DelegateClass(File)
63
65
  #
64
66
  # Related: Tempfile.create.
65
67
  #
66
- def initialize(basename="", tmpdir=nil, mode: 0, perm: 0600, **options)
68
+ def initialize(basename = "", tmpdir = nil, mode: 0, perm: 0o600, **kwargs)
67
69
  warn "Tempfile.new doesn't call the given block.", uplevel: 1 if block_given?
68
70
 
69
71
  @unlinked = false
70
- @mode = mode|File::RDWR|File::CREAT|File::EXCL
71
- ::Dir::Tmpname.create(basename, tmpdir, **options) do |tmpname, n, opts|
72
+ @mode = mode | File::RDWR | File::CREAT | File::EXCL
73
+ ::Dir::Tmpname.create(basename, tmpdir, **kwargs) do |tmpname, n, opts|
72
74
  @tmpfile = File.open(tmpname, @mode, perm, **opts)
73
75
  @perm = perm
74
76
  @opts = opts.freeze
@@ -81,7 +83,7 @@ class Chan::Tempfile < DelegateClass(File)
81
83
  # Opens or reopens the file with mode "r+".
82
84
  def open
83
85
  _close
84
- mode = @mode & ~(File::CREAT|File::EXCL)
86
+ mode = @mode & ~(File::CREAT | File::EXCL)
85
87
  @tmpfile = File.open(@tmpfile.path, mode, **@opts)
86
88
  __setobj__(@tmpfile)
87
89
  end
@@ -97,7 +99,7 @@ class Chan::Tempfile < DelegateClass(File)
97
99
  #
98
100
  # If you don't explicitly unlink the temporary file, the removal
99
101
  # will be delayed until the object is finalized.
100
- def close(unlink_now=false)
102
+ def close(unlink_now = false)
101
103
  _close
102
104
  unlink if unlink_now
103
105
  end
@@ -153,7 +155,7 @@ class Chan::Tempfile < DelegateClass(File)
153
155
  ObjectSpace.undefine_finalizer(self)
154
156
  @unlinked = true
155
157
  end
156
- alias delete unlink
158
+ alias_method :delete, :unlink
157
159
 
158
160
  # Returns the full path name of the temporary file.
159
161
  # This will be nil if #unlink has been called.
@@ -170,7 +172,7 @@ class Chan::Tempfile < DelegateClass(File)
170
172
  File.size(@tmpfile.path)
171
173
  end
172
174
  end
173
- alias length size
175
+ alias_method :length, :size
174
176
 
175
177
  # :stopdoc:
176
178
  def inspect
@@ -190,7 +192,7 @@ class Chan::Tempfile < DelegateClass(File)
190
192
  def call(*args)
191
193
  return if @pid != Process.pid
192
194
 
193
- $stderr.puts "removing #{@tmpfile.path}..." if $DEBUG
195
+ warn "removing #{@tmpfile.path}..." if $DEBUG
194
196
 
195
197
  @tmpfile.close
196
198
  begin
@@ -198,7 +200,7 @@ class Chan::Tempfile < DelegateClass(File)
198
200
  rescue Errno::ENOENT
199
201
  end
200
202
 
201
- $stderr.puts "done" if $DEBUG
203
+ warn "done" if $DEBUG
202
204
  end
203
205
  end
204
206
 
@@ -240,8 +242,8 @@ class Chan::Tempfile < DelegateClass(File)
240
242
  # ensure
241
243
  # f.close
242
244
  # end
243
- def self.open(*args, **kw)
244
- tempfile = new(*args, **kw)
245
+ def self.open(*args, **kwargs)
246
+ tempfile = new(*args, **kwargs)
245
247
 
246
248
  if block_given?
247
249
  begin
@@ -313,10 +315,10 @@ module Chan
313
315
  #
314
316
  # Related: Tempfile.new.
315
317
  #
316
- def Tempfile.create(basename="", tmpdir=nil, mode: 0, perm: 0600, **options)
318
+ def Tempfile.create(basename = "", tmpdir = nil, mode: 0, perm: 0o600, **kwargs)
317
319
  tmpfile = nil
318
- Dir::Tmpname.create(basename, tmpdir, **options) do |tmpname, n, opts|
319
- mode |= File::RDWR|File::CREAT|File::EXCL
320
+ Dir::Tmpname.create(basename, tmpdir, **kwargs) do |tmpname, n, opts|
321
+ mode |= File::RDWR | File::CREAT | File::EXCL
320
322
  tmpfile = File.open(tmpname, mode, perm, **opts)
321
323
  end
322
324
  if block_given?
@@ -325,7 +327,11 @@ module Chan
325
327
  ensure
326
328
  unless tmpfile.closed?
327
329
  if File.identical?(tmpfile, tmpfile.path)
328
- unlinked = File.unlink tmpfile.path rescue nil
330
+ unlinked = begin
331
+ File.unlink tmpfile.path
332
+ rescue
333
+ nil
334
+ end
329
335
  end
330
336
  tmpfile.close
331
337
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  ##
4
- # An easy-to-use InterProcess Communication (IPC) library.
4
+ # An easy-to-use InterProcess Communication (IPC) library
5
5
  class Chan::UNIXSocket
6
6
  require "socket"
7
7
  require "lockf"
@@ -42,11 +42,11 @@ class Chan::UNIXSocket
42
42
  # @return [Chan::UNIXSocket]
43
43
  # Returns an instance of {Chan::UNIXSocket Chan::UNIXSocket}
44
44
  def initialize(s, sock_type: Socket::SOCK_DGRAM, tmpdir: Dir.tmpdir)
45
- @s = Chan.shortcuts[s]&.call || s
45
+ @s = Chan.serializers[s]&.call || s
46
46
  @r, @w = ::UNIXSocket.pair(sock_type)
47
47
  @bytes = Chan::Bytes.new(tmpdir)
48
48
  @counter = Chan::Counter.new(tmpdir)
49
- @lock = LockFile.new Chan.temporary_file(%w[xchan .lock], tmpdir:)
49
+ @lockf = Lock::File.new Chan.temporary_file(%w[xchan .lock], tmpdir:)
50
50
  end
51
51
 
52
52
  ##
@@ -64,11 +64,11 @@ class Chan::UNIXSocket
64
64
  #
65
65
  # @return [void]
66
66
  def close
67
- @lock.lock
67
+ @lockf.lock
68
68
  raise IOError, "channel is closed" if closed?
69
- [@r, @w, @bytes, @lock.file].each(&:close)
69
+ [@r, @w, @bytes, @lockf].each(&:close)
70
70
  rescue IOError => ex
71
- @lock.release
71
+ @lockf.release
72
72
  raise(ex)
73
73
  end
74
74
 
@@ -111,14 +111,14 @@ class Chan::UNIXSocket
111
111
  # @return [Integer, nil]
112
112
  # Returns the number of bytes written to the channel
113
113
  def send_nonblock(object)
114
- @lock.lock_nonblock
114
+ @lockf.lock_nonblock
115
115
  raise IOError, "channel closed" if closed?
116
116
  len = @w.write_nonblock(serialize(object))
117
117
  @bytes.push(len)
118
118
  @counter.increment!(bytes_written: len)
119
- len.tap { @lock.release }
119
+ len.tap { @lockf.release }
120
120
  rescue IOError, IO::WaitWritable, Errno::ENOBUFS => ex
121
- @lock.release
121
+ @lockf.release
122
122
  raise Chan::WaitWritable, ex.message
123
123
  rescue Errno::EWOULDBLOCK => ex
124
124
  raise Chan::WaitLockable, ex.message
@@ -164,18 +164,18 @@ class Chan::UNIXSocket
164
164
  # @return [Object]
165
165
  # Returns an object from the channel
166
166
  def recv_nonblock
167
- @lock.lock_nonblock
167
+ @lockf.lock_nonblock
168
168
  raise IOError, "closed channel" if closed?
169
169
  len = @bytes.shift
170
170
  obj = deserialize(@r.read_nonblock(len.zero? ? 1 : len))
171
171
  @counter.increment!(bytes_read: len)
172
- obj.tap { @lock.release }
172
+ obj.tap { @lockf.release }
173
173
  rescue IOError => ex
174
- @lock.release
174
+ @lockf.release
175
175
  raise(ex)
176
176
  rescue IO::WaitReadable => ex
177
177
  @bytes.unshift(len)
178
- @lock.release
178
+ @lockf.release
179
179
  raise Chan::WaitReadable, ex.message
180
180
  rescue Errno::EAGAIN => ex
181
181
  raise Chan::WaitLockable, ex.message
@@ -187,9 +187,9 @@ class Chan::UNIXSocket
187
187
 
188
188
  ##
189
189
  # @example
190
- # ch = xchan
190
+ # ch = xchan(:pure)
191
191
  # 1.upto(4) { ch.send(_1) }
192
- # ch.to_a.last # => 4
192
+ # ch.to_a.last # => "4"
193
193
  #
194
194
  # @return [Array<Object>]
195
195
  # Returns the contents of the channel
@@ -269,10 +269,10 @@ class Chan::UNIXSocket
269
269
  private
270
270
 
271
271
  def lock
272
- @lock.lock
272
+ @lockf.lock
273
273
  yield
274
274
  ensure
275
- @lock.release
275
+ @lockf.release
276
276
  end
277
277
 
278
278
  def serialize(obj)
data/lib/xchan/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Chan
4
- VERSION = "0.17.2"
4
+ VERSION = "0.18.0"
5
5
  end
data/lib/xchan.rb CHANGED
@@ -10,17 +10,14 @@ module Chan
10
10
  WaitLockable = Class.new(Errno::EWOULDBLOCK)
11
11
 
12
12
  ##
13
- # The Pure serializer won't perform
14
- # serialization that goes beyond calling
15
- # `.to_s` on the object it is given. It
16
- # can be useful when you want to communicate
17
- # purely in strings.
13
+ # Coerces an object to a string for a
14
+ # channel communicating in raw strings
15
+ # (in other words: without serialization)
18
16
  #
19
17
  # @example
20
18
  # ch = xchan(:pure)
21
- # Process.wait fork {
22
- # ch.send "Hello world"
23
- # }
19
+ # fork { ch.send "Hello world" }
20
+ # Process.wait
24
21
  # puts ch.recv
25
22
  Pure = Class.new do
26
23
  def self.dump(str) = str.to_s
@@ -47,8 +44,8 @@ module Chan
47
44
 
48
45
  ##
49
46
  # @return [Hash<Symbol, Proc>]
50
- # Maps a short name to a serializer
51
- def self.shortcuts
47
+ # Returns the default serializers
48
+ def self.serializers
52
49
  {
53
50
  pure: lambda { Pure },
54
51
  marshal: lambda { Marshal },
@@ -76,7 +73,7 @@ module Kernel
76
73
  # @param sock_type (see Chan::UNIXSocket#initialize)
77
74
  # @param tmpdir (see Chan::UNIXSocket#initialize)
78
75
  # @return (see Chan::UNIXSocket#initialize)
79
- def xchan(s, **kw_args)
80
- Chan::UNIXSocket.new(s, **kw_args)
76
+ def xchan(s, ...)
77
+ Chan::UNIXSocket.new(s, ...)
81
78
  end
82
79
  end
@@ -2,13 +2,14 @@
2
2
 
3
3
  require_relative "../setup"
4
4
  require "xchan"
5
+ require "xchan"
5
6
 
6
7
  ##
7
- # This channel uses Marshal to serialize objects
8
+ # Marshal as the serializer
8
9
  ch = xchan(:marshal)
9
10
  Process.wait fork { ch.send(5) }
10
- print "There are ", ch.recv + 7, " disciples and the same number of tribes", "\n"
11
+ print "#{ch.recv} + 7 = 12", "\n"
11
12
  ch.close
12
13
 
13
14
  ##
14
- # There are 12 disciples and the same number of tribes
15
+ # 5 + 7 = 12
data/test/readme_test.rb CHANGED
@@ -1,42 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "setup"
4
- require "test/cmd"
4
+ require "test-cmd"
5
5
 
6
6
  class Chan::ReadmeTest < Test::Unit::TestCase
7
7
  def test_serialization_1_serializers
8
- assert_equal "There are 12 disciples and the same number of tribes\n",
9
- readme_example("serialization/1_serializers.rb").stdout
8
+ assert_equal "5 + 7 = 12\n",
9
+ cmd("ruby", readme_example("serialization/1_serializers.rb")).stdout
10
10
  end
11
11
 
12
12
  def test_read_operations_1_blocking_read
13
13
  r = 'Send a random number \(from parent process\)\s*' \
14
14
  'Received random number \(child process\): \d+'
15
15
  assert_match Regexp.new(r),
16
- readme_example("read_operations/1_blocking_read.rb").stdout
17
- .tr("\n", " ")
16
+ cmd("ruby", readme_example("read_operations/1_blocking_read.rb"))
17
+ .stdout
18
+ .tr("\n", " ")
18
19
  end
19
20
 
20
21
  def test_write_operations_2_non_blocking_write
21
22
  assert_equal ["Blocked - free send buffer\n"],
22
- readme_example("write_operations/2_nonblocking_write.rb").stdout
23
- .each_line
24
- .uniq
23
+ cmd("ruby", readme_example("write_operations/2_nonblocking_write.rb"))
24
+ .stdout
25
+ .each_line
26
+ .uniq
25
27
  end
26
28
 
27
29
  def test_socket_2_options
28
30
  r = 'The read buffer can contain a maximum of: \d{1,6} bytes.\s*' \
29
31
  'The maximum size of a single message is: \d{1,6} bytes.\s*'
30
32
  assert_match Regexp.new(r),
31
- readme_example("socket/2_options.rb").stdout
32
- .tr("\n", " ")
33
+ cmd("ruby", readme_example("socket/2_options.rb"))
34
+ .stdout
35
+ .tr("\n", " ")
33
36
  end
34
37
 
35
38
  private
36
39
 
37
40
  def readme_example(path)
38
- examples_dir = File.join(Dir.getwd, "share", "xchan.rb", "examples")
39
- example = File.join(examples_dir, path)
40
- cmd "bundle exec ruby #{example}"
41
+ dir = File.join(Dir.getwd, "share", "xchan.rb", "examples")
42
+ File.join(dir, path)
41
43
  end
42
44
  end
data/test/setup.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
3
4
  require "json"
4
5
  require "yaml"
5
6
  require "timeout"
data/test/xchan_test.rb CHANGED
@@ -84,7 +84,7 @@ class Chan::RecvNonBlockTest < Chan::Test
84
84
  end
85
85
 
86
86
  def test_recv_nonblock_with_a_lock
87
- ch.instance_variable_get(:@lock).lock
87
+ ch.instance_variable_get(:@lockf).lock
88
88
  pid = fork do
89
89
  ch.recv_nonblock
90
90
  exit(1)
@@ -205,7 +205,7 @@ class Chan::TemporaryFileTest < Chan::Test
205
205
  end
206
206
 
207
207
  def test_temporary_file_path
208
- assert_match %r|#{Regexp.escape(Dir.tmpdir)}/foobar[a-zA-Z0-9-]+\.txt|,
208
+ assert_match %r{#{Regexp.escape(Dir.tmpdir)}/foobar[a-zA-Z0-9-]+\.txt},
209
209
  file.to_path
210
210
  ensure
211
211
  file.close
data/xchan.rb.gemspec CHANGED
@@ -12,11 +12,11 @@ Gem::Specification.new do |gem|
12
12
  gem.require_paths = ["lib"]
13
13
  gem.summary = "An easy to use InterProcess Communication (IPC) library"
14
14
  gem.description = gem.summary
15
- gem.add_runtime_dependency "lockf.rb", "~> 1.0"
15
+ gem.add_runtime_dependency "lockf.rb", "~> 2.1"
16
16
  gem.add_development_dependency "test-unit", "~> 3.5.7"
17
17
  gem.add_development_dependency "yard", "~> 0.9"
18
18
  gem.add_development_dependency "redcarpet", "~> 3.5"
19
19
  gem.add_development_dependency "standard", "~> 1.13"
20
- gem.add_development_dependency "test-cmd.rb", "~> 0.8"
20
+ gem.add_development_dependency "test-cmd.rb", "~> 0.12.4"
21
21
  gem.add_development_dependency "rake", "~> 13.1"
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xchan.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.2
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-11 00:00:00.000000000 Z
11
+ date: 2024-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lockf.rb
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '2.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: test-unit
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.8'
89
+ version: 0.12.4
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.8'
96
+ version: 0.12.4
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -117,7 +117,6 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - ".github/workflows/tests.yml"
119
119
  - ".gitignore"
120
- - ".gitlab-ci.yml"
121
120
  - ".projectile"
122
121
  - ".rubocop.yml"
123
122
  - ".yardopts"
@@ -162,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
161
  - !ruby/object:Gem::Version
163
162
  version: '0'
164
163
  requirements: []
165
- rubygems_version: 3.5.9
164
+ rubygems_version: 3.5.11
166
165
  signing_key:
167
166
  specification_version: 4
168
167
  summary: An easy to use InterProcess Communication (IPC) library
data/.gitlab-ci.yml DELETED
@@ -1,12 +0,0 @@
1
- stages:
2
- - test
3
-
4
- test-ruby32:
5
- stage: test
6
- image: ruby:3.2.0
7
- script:
8
- - bundle install
9
- - SERIALIZER=marshal bundle exec rake
10
- - SERIALIZER=json bundle exec rake
11
- - SERIALIZER=yaml bundle exec rake
12
- - SERIALIZER=pure bundle exec rake