class Railjet::Listener

Public Class Methods

listen_to(event, &block) click to toggle source
# File lib/railjet/bus.rb, line 52
def listen_to(event, &block)
  subscriptions << event
  define_listeners(event, &block)
end
sidekiq_options(options = {}) click to toggle source
# File lib/railjet/bus.rb, line 57
def sidekiq_options(options = {})
  if options.present?
    self.sidekiq_options_hash = self.sidekiq_options_hash.merge(options.stringify_keys)
  else
    self.sidekiq_options_hash
  end
end
subscriptions() click to toggle source
# File lib/railjet/bus.rb, line 48
def subscriptions
  @subscriptions ||= []
end

Private Class Methods

define_listener(event, &block) click to toggle source
# File lib/railjet/bus.rb, line 72
def define_listener(event, &block)
  define_method listener_name(event) do |**kwargs|
    around_listener(event, **kwargs) { |**kwargs| instance_exec(**kwargs, &block) }
  end
end
define_listener_caller(event) click to toggle source
# File lib/railjet/bus.rb, line 78
def define_listener_caller(event)
  name = listener_name(event)
  define_singleton_method name do |**kwargs|
    new.public_send(name, **kwargs)
  end
end
define_listeners(event, &block) click to toggle source
# File lib/railjet/bus.rb, line 67
def define_listeners(event, &block)
  define_listener(event, &block)
  define_listener_caller(event)
end
listener_name(event) click to toggle source
# File lib/railjet/bus.rb, line 85
def listener_name(event)
  "on_#{event}"
end

Public Instance Methods

around_listener(event, **kwargs) { |**kwargs| ... } click to toggle source

This around block does nothing but it's there as point of extensions so it could be easily overridden in sub-class if some additional setup is needed

# File lib/railjet/bus.rb, line 93
def around_listener(event, **kwargs)
  yield(**kwargs)
end