[ruby/erb] Make @scanner_map of ERB::Compiler::Scanner ractor-shareable

- Freeze on assignment
- Recreate Hash on registration

https://github.com/ruby/erb/commit/12d69fc2b3
This commit is contained in:
wanabe 2025-01-15 12:30:59 +09:00 committed by git
parent 96b5cde28b
commit 272a8c3c3f

View File

@ -80,10 +80,16 @@ class ERB::Compiler # :nodoc:
end end
class Scanner # :nodoc: class Scanner # :nodoc:
@scanner_map = {} @scanner_map = defined?(Ractor) ? Ractor.make_shareable({}) : {}
class << self class << self
def register_scanner(klass, trim_mode, percent) if defined?(Ractor)
@scanner_map[[trim_mode, percent]] = klass def register_scanner(klass, trim_mode, percent)
@scanner_map = Ractor.make_shareable({ **@scanner_map, [trim_mode, percent] => klass })
end
else
def register_scanner(klass, trim_mode, percent)
@scanner_map[[trim_mode, percent]] = klass
end
end end
alias :regist_scanner :register_scanner alias :regist_scanner :register_scanner
end end