Sha256: ae7e796bdd69533723f6521d47bef1a7a788943a9b97574a3240e010e10053ab
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true module ActiveSupport module ForkTracker # :nodoc: module CoreExt def fork(...) if block_given? super do ForkTracker.check! yield end else unless pid = super ForkTracker.check! end pid end end end module CoreExtPrivate include CoreExt private def fork(...) super end end @pid = Process.pid @callbacks = [] class << self def check! if @pid != Process.pid @callbacks.each(&:call) @pid = Process.pid end end def hook! if Process.respond_to?(:fork) ::Object.prepend(CoreExtPrivate) ::Kernel.prepend(CoreExtPrivate) ::Kernel.singleton_class.prepend(CoreExt) ::Process.singleton_class.prepend(CoreExt) end end def after_fork(&block) @callbacks << block block end def unregister(callback) @callbacks.delete(callback) end end end end ActiveSupport::ForkTracker.hook!
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
activesupport-7.0.0.alpha2 | lib/active_support/fork_tracker.rb |
activesupport-7.0.0.alpha1 | lib/active_support/fork_tracker.rb |