module Apartment::Database

def self.mysql2_adapter(config)

def self.mysql2_adapter(config)
  Apartment.use_schemas ?
    Adapters::Mysql2SchemaAdapter.new(config) :
    Adapters::Mysql2Adapter.new(config)
end

def self.postgis_adapter(config)

def self.postgis_adapter(config)
  Apartment.use_schemas ?
    Adapters::PostgresqlSchemaAdapter.new(config) :
    Adapters::PostgresqlAdapter.new(config)
end

def self.postgresql_adapter(config)

def self.postgresql_adapter(config)
  Apartment.use_schemas ?
    Adapters::PostgresqlSchemaAdapter.new(config) :
    Adapters::PostgresqlAdapter.new(config)
end

def adapter

Returns:
  • (subclass of Apartment::AbstractAdapter) -
def adapter
  Thread.current[:apartment_adapter] ||= begin
    adapter_method = "#{config[:adapter]}_adapter"
    begin
      require "apartment/adapters/#{adapter_method}"
    rescue LoadError
      raise "The adapter `#{config[:adapter]}` is not yet supported"
    end
    unless respond_to?(adapter_method)
      raise AdapterNotFound, "database configuration specifies nonexistent #{config[:adapter]} adapter"
    end
    send(adapter_method, config)
  end
end

def config


Fetch the rails database configuration
def config
  @config ||= Rails.configuration.database_configuration[Rails.env].symbolize_keys
end

def init


Initialize Apartment config options such as excluded_models
def init
  process_excluded_models
end

def reload!(config = nil)


Reset config and adapter so they are regenerated
def reload!(config = nil)
  Thread.current[:apartment_adapter] = nil
  @config = config
end