Module: RactorRailsShim::Freezers::MessagesConstantsFreezer
- Extended by:
- RoleDefaults
- Defined in:
- lib/ractor_rails_shim/roles/freezers.rb
Constant Summary
collapse
- TARGET_NAMES =
Mutable target list — downstream apps can register their own
message-serializer constants via add_target without monkey-patching.
%i[ENVELOPE_SERIALIZERS TIMESTAMP_SERIALIZERS]
Class Method Summary
collapse
default_funnel, default_reassign_shareable_const, default_safe_const_get
Class Method Details
._load_message_pack ⇒ Object
265
266
267
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 265
def self._load_message_pack
require "active_support/message_pack"
end
|
.add_target(name) ⇒ Object
236
237
238
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 236
def self.add_target(name)
TARGET_NAMES << name unless TARGET_NAMES.include?(name)
end
|
.call ⇒ Object
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 244
def self.call
return true unless msgpack_available?
_load_message_pack
mod = safe_const_get.call("ActiveSupport::Messages::Metadata", inherit: false)
return true unless mod.is_a?(Module)
TARGET_NAMES.each do |name|
next unless mod.const_defined?(name, false)
val = mod.const_get(name, false)
next if Ractor.shareable?(val)
shareable = Ractor.make_shareable(val) rescue val
begin
mod.send(:remove_const, name) if mod.const_defined?(name, false)
mod.const_set(name, shareable)
rescue StandardError
nil
end
end
true
end
|
220
221
222
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 220
def self.configure(safe_const_get: nil)
@safe_const_get = safe_const_get
end
|
.msgpack_available? ⇒ Boolean
240
241
242
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 240
def self.msgpack_available?
Gem::Specification.find_all_by_name("msgpack").any?
end
|
.reset_configuration ⇒ Object
224
225
226
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 224
def self.reset_configuration
@safe_const_get = nil
end
|
.safe_const_get ⇒ Object
228
229
230
|
# File 'lib/ractor_rails_shim/roles/freezers.rb', line 228
def self.safe_const_get
@safe_const_get || default_safe_const_get
end
|