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 +4 -4
- data/CHANGELOG.md +4 -0
- data/src/ractorize/ractorized_object.rb +2 -1
- data/src/ractorize.rb +19 -14
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b13798c2672421a3ade98f40b682d17bf7cd7f4015623c5aaad5deae50a284f5
|
|
4
|
+
data.tar.gz: f9d670957f28b585ef14ef1d2b86f28a3161fdb378eb5a6d6f164ac6bee5f44b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cbd7694277cd6e9d671727fd234751b5c0e847b77f44f39252e6a8db84eaf0edc20aa662e5baed4650b068b012880c26cf0f9356e559159864f80464fff12cc8
|
|
7
|
+
data.tar.gz: d5dc1e7be2a29f0d5a6d4a268f185a0bb236d7eedc486559d088d31e270795ff601dd375a868df872ad2eef8bcf2600785a59ae1da6b239a2bab70a811f5c88d
|
data/CHANGELOG.md
CHANGED
|
@@ -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
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
246
|
+
method_args, opts = Ractorize.extract_args(args_port)
|
|
247
247
|
end
|
|
248
248
|
|
|
249
249
|
if block_given
|
|
250
|
-
block_result_port =
|
|
250
|
+
block_result_port = Ractor::Port.new
|
|
251
251
|
|
|
252
252
|
value = object.__send__(method_name, *method_args, **opts) do |*args, **opts, &b|
|
|
253
|
-
|
|
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
|
-
|
|
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
|
-
|
|
276
|
-
|
|
277
|
-
|
|
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
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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:
|