[#111712] [Ruby master Feature#19322] Support spawning "private" child processes — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>
SXNzdWUgIzE5MzIyIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGtqdHNhbmFrdHNpZGlzIChLSiBUc2Fu
14 messages
2023/01/07
[ruby-core:111775] [Ruby master Bug#19330] ruby 3.2.0 parameter autosplat breaks call using (*args, &block)
From:
"rockorequin (rocko requin) via ruby-core" <ruby-core@...>
Date:
2023-01-11 02:37:55 UTC
List:
ruby-core #111775
Issue #19330 has been reported by rockorequin (rocko requin).
----------------------------------------
Bug #19330: ruby 3.2.0 parameter autosplat breaks call using (*args, &block)
https://bugs.ruby-lang.org/issues/19330
* Author: rockorequin (rocko requin)
* Status: Open
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
The following code in Rails 6.1.7 activerecord relation.rb no longer works with ruby 3.2.0, because the call "instance_exec(*args, &block)" raises an ArgumentException:
```
def _exec_scope(*args, &block) # :nodoc:
@delegate_to_klass = true
_scoping(nil) { instance_exec(*args, &block) || self }
ensure
@delegate_to_klass = false
end
```
I think it may be due to the bugfix https://bugs.ruby-lang.org/issues/18633 ("proc { |a, **kw| a } autosplats and treats empty kwargs specially").
There is more info at https://github.com/rails/rails/issues/46934, including this code to reproduce the issue:
```
gem 'rails', '=6.1.7'
require 'active_record'
class Test < ActiveRecord::Base
scope :test, ->(arg: nil) {}
end
Test.test(arg: 1)
```
Another user in that issue report has indicated that the syntax "save(**)" in suppressor.rb raises the same exception in ruby 3.2.0:
```
def save(**) # :nodoc:
SuppressorRegistry.suppressed[self.class.name] ? true : super
end
```
Is this intentional, ie is the syntax "instance_exec(*args, &block)" etc no longer valid in ruby 3.2.0?
If so, could a note indicating this incompatibility perhaps be added to the release notes for 3.2.0?
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/