ractorize 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 717f8ece3185d394b66aade1e78947eb5bb859535a8fa4afdaa88e33ad821cc9
4
- data.tar.gz: af1aeaf9cc3c4b76625ba228ed5ed60cd77afde597cbcafd4ca059ca2ec52488
3
+ metadata.gz: b13798c2672421a3ade98f40b682d17bf7cd7f4015623c5aaad5deae50a284f5
4
+ data.tar.gz: f9d670957f28b585ef14ef1d2b86f28a3161fdb378eb5a6d6f164ac6bee5f44b
5
5
  SHA512:
6
- metadata.gz: 188fa21adfbdeff96e906f1c38ed41beeab1f4e41d6581a4494cd3245611ae457848b8f0571cd04a83ba453a539073ff4152c2ac5b72ea395d40ed4ada0df4f4
7
- data.tar.gz: 2c5ffbd40dbc7f2399eed5a8350eaa86a372e2cdc2efec07389c4a16be9deeeba9c9dea1490784306126629682b4444a8b0ffc6b321469b647e71a45c2c5db16
6
+ metadata.gz: cbd7694277cd6e9d671727fd234751b5c0e847b77f44f39252e6a8db84eaf0edc20aa662e5baed4650b068b012880c26cf0f9356e559159864f80464fff12cc8
7
+ data.tar.gz: d5dc1e7be2a29f0d5a6d4a268f185a0bb236d7eedc486559d088d31e270795ff601dd375a868df872ad2eef8bcf2600785a59ae1da6b239a2bab70a811f5c88d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.0.6] - 2026-06-06
2
+
3
+ - Fix a bug where a closed port mysteriously breaks out of Kernel#loop
4
+
1
5
  ## [0.0.5] - 2026-05-30
2
6
 
3
7
  - Support auto-freezing certain method-arguments
@@ -72,7 +72,8 @@ module Ractorize
72
72
  def method_missing(method_name, *args, **opts, &block)
73
73
  if @ractor.default_port.closed?
74
74
  ::Kernel.raise ::Ractor::ClosedError,
75
- "You already closed this Ractorized object! No more methods can be sent to it."
75
+ "You already closed this Ractorized instance of #{@__target_class__}!\n" \
76
+ "No more methods can be sent to it but you sent #{method_name}"
76
77
  end
77
78
 
78
79
  return_port = ::Ractor::Port.new
data/src/ractorize.rb CHANGED
@@ -220,12 +220,12 @@ module Ractorize
220
220
  klass = receive
221
221
  target_class = klass
222
222
 
223
- args, opts, block = ::Ractorize.extract_args(self)
223
+ args, opts, block = Ractorize.extract_args(self)
224
224
 
225
225
  klass.new(*args.freeze, **opts.freeze, &block)
226
226
  else
227
227
  # :nocov:
228
- ::Kernel.raise "Invalid mode #{mode}"
228
+ raise "Invalid mode #{mode}"
229
229
  # :nocov:
230
230
  end
231
231
 
@@ -243,14 +243,14 @@ module Ractorize
243
243
  return_port << args_port
244
244
 
245
245
  method_name = args_port.receive
246
- method_args, opts = ::Ractorize.extract_args(args_port)
246
+ method_args, opts = Ractorize.extract_args(args_port)
247
247
  end
248
248
 
249
249
  if block_given
250
- block_result_port = ::Ractor::Port.new
250
+ block_result_port = Ractor::Port.new
251
251
 
252
252
  value = object.__send__(method_name, *method_args, **opts) do |*args, **opts, &b|
253
- ::Ractorize.prepare_args(target_class, args, opts, skip_move: true)
253
+ Ractorize.prepare_args(target_class, args, opts, skip_move: true)
254
254
 
255
255
  return_port << [:yield, [args.dup.freeze, opts.dup.freeze, b].freeze, block_result_port].freeze
256
256
 
@@ -263,7 +263,7 @@ module Ractorize
263
263
  break return_value
264
264
  else
265
265
  # :nocov:
266
- ::Kernel.raise "Not sure how to handle outcome_type #{outcome_type}"
266
+ raise "Not sure how to handle outcome_type #{outcome_type}"
267
267
  # :nocov:
268
268
  end
269
269
  end
@@ -271,10 +271,15 @@ module Ractorize
271
271
  return_port << [:return, value].freeze
272
272
  else
273
273
  value = object.__send__(method_name, *method_args, **opts)
274
-
275
- value = value.__value__ while ::Ractorize::Thunk === value
276
-
277
- return_port << value
274
+ value = value.__value__ while Ractorize::Thunk === value
275
+
276
+ begin
277
+ return_port.send(value)
278
+ rescue Ractor::ClosedError
279
+ # Whoa... this error inherits from StopIteration and will kill the loop!!!
280
+ # Nothing really to do here but keep the loop going and handle other
281
+ # method calls to the ractorized object from other ractors.
282
+ end
278
283
  end
279
284
  end
280
285
  end
@@ -282,10 +287,10 @@ module Ractorize
282
287
  object
283
288
  rescue => e
284
289
  # :nocov:
285
- ::Kernel.puts
286
- ::Kernel.puts "an error!!! #{e.class} #{e.message} #{e}"
287
- ::Kernel.puts e.backtrace
288
- ::Kernel.puts
290
+ puts
291
+ puts "an unhandled error!!! #{e.class} #{e.message} #{e}"
292
+ puts e.backtrace
293
+ puts
289
294
 
290
295
  raise
291
296
  # :nocov:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ractorize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi