class ReactiveObservers::DatabaseAdapters::Factory

Public Class Methods

new(configuration) click to toggle source
# File lib/reactive_observers/database_adapters/factory.rb, line 8
def initialize(configuration)
  @configuration = configuration
end

Public Instance Methods

initialize_observer_listeners() click to toggle source
# File lib/reactive_observers/database_adapters/factory.rb, line 12
def initialize_observer_listeners
  collect_database_adapters.each do |database_adapter, klasses|
    case database_adapter
    when 'PostgreSQL'
      PostgreSQLAdapter.new(@configuration, klasses).start_listening
    when 'PostGIS'
      PostgreSQLAdapter.new(@configuration, klasses).start_listening
    else
      raise StandardError, "Reactive observers cannot be run with this database adapter: #{database_adapter}!"
    end
  end
end

Private Instance Methods

collect_database_adapters() click to toggle source
# File lib/reactive_observers/database_adapters/factory.rb, line 27
def collect_database_adapters
  {}.tap do |result|
    @configuration.observed_tables.map do |observed_table|
      klass = observed_table.to_s.classify.constantize
      adapter = klass.connection.adapter_name
      result[adapter] = (result[adapter] || []) << klass
    end
  end
end