Class: Listenable::Railtie

Inherits:
Rails::Railtie
  • Object
show all
Defined in:
lib/listenable/railtie.rb

Constant Summary collapse

AFTER_COMMIT_MAP =
{
  'created' => :create,
  'updated' => :update,
  'destroyed' => :destroy
}.freeze

Class Method Summary collapse

Class Method Details

.handle_async_listener(listener_class, method, record_class, record_id) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/listenable/railtie.rb', line 99

def handle_async_listener(listener_class, method, record_class, record_id)
  Concurrent::Promises.future_on(Listenable.async_executor) do
    ActiveRecord::Base.connection_pool.with_connection do
      execute_listener(listener_class, method, record_class, record_id)
    end
  rescue ActiveRecord::ConnectionTimeoutError => e
    Rails.logger&.error(
      "[Listenable] DB pool exhausted for #{listener_class}##{method}: #{e.message}"
    )
  rescue StandardError => e
    log_error(listener_class, method, e)
  end
end

.handle_sync_listener(listener_class, method, record_class, record_id) ⇒ Object



113
114
115
116
117
118
# File 'lib/listenable/railtie.rb', line 113

def handle_sync_listener(listener_class, method, record_class, record_id)
  execute_listener(listener_class, method, record_class, record_id)
rescue StandardError => e
  log_error(listener_class, method, e)
  raise
end