Sha256: 201d9029acdf92656a0f99ed3a64529676f3a2a0ce560f4fd066025a18b671aa

Contents?: true

Size: 738 Bytes

Versions: 4

Compression:

Stored size: 738 Bytes

Contents

class Thread
  alias_method :_initialize, :initialize # rubocop:disable Style/Alias

  def self.on_initialize(&callback)
    @@on_initialize_count = 0 if @on_initialize_count.nil? # rubocop:disable Style/ClassVars
    count_to_use = @@on_initialize_count
    @@on_initialize_count += 1 # rubocop:disable Style/ClassVars

    @@on_initialize_callbacks ||= {} # rubocop:disable Style/ClassVars
    @@on_initialize_callbacks[count_to_use] = callback

    count_to_use
  end

  def initialize(*args, &block)
    @@on_initialize_callbacks ||= {} # rubocop:disable Style/ClassVars
    @@on_initialize_callbacks.each_value do |callback|
      callback.call(parent: Thread.current, thread: self)
    end

    _initialize(*args, &block)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
peak_flow_utils-0.1.19 lib/peak_flow_utils/thread_callbacks_patch.rb
peak_flow_utils-0.1.18 lib/peak_flow_utils/thread_callbacks_patch.rb
peak_flow_utils-0.1.17 lib/peak_flow_utils/thread_callbacks_patch.rb
peak_flow_utils-0.1.16 lib/peak_flow_utils/thread_callbacks_patch.rb