Class: Karafka::CodeReloader

Inherits:
Object
  • Object
show all
Defined in:
lib/karafka/code_reloader.rb

Overview

Special type of a listener, that is not an instrumentation one, but one that triggers code reload in the development mode after each fetched batch (or message)

Please refer to the development code reload sections for details on the benefits and downsides of the in-process code reloading

Instance Method Summary collapse

Constructor Details

#initialize(*reloaders, &block) ⇒ CodeReloader

Returns a new instance of CodeReloader.

Parameters:

  • reloaders (Array<Object>)

    any code loaders that we use in this app. Whether it is the Rails loader, Zeitwerk or anything else that allows reloading triggering

  • block (Proc)

    yields given block just before reloading. This can be used to hook custom reloading stuff, that ain’t reloaders (for example for resetting dry-events registry)



21
22
23
24
# File 'lib/karafka/code_reloader.rb', line 21

def initialize(*reloaders, &block)
  @reloaders = reloaders
  @block = block
end

Instance Method Details

#on_connection_listener_fetch_loop(_event) ⇒ Object

Note:

Since we de-register all the user defined objects and redraw routes, it means that we won’t be able to do a multi-batch buffering in the development mode as each of the batches will be buffered on a newly created “per fetch” instance.

Binds to the instrumentation events and triggers reload

Parameters:

  • _event (Dry::Event)

    empty dry event



31
32
33
# File 'lib/karafka/code_reloader.rb', line 31

def on_connection_listener_fetch_loop(_event)
  reload
end