class Apartment::Adapters::Mysql2SchemaAdapter

Public Class Methods

new(config) click to toggle source
# File lib/apartment/adapters/mysql2_adapter.rb, line 30
def initialize(config)
  super

  @default_tenant = config[:database]
  reset
end

Public Instance Methods

reset() click to toggle source

Reset current tenant to the default_tenant

# File lib/apartment/adapters/mysql2_adapter.rb, line 39
def reset
  Apartment.connection.execute "use `#{default_tenant}`"
end

Protected Instance Methods

connect_to_new(tenant) click to toggle source

Connect to new tenant

# File lib/apartment/adapters/mysql2_adapter.rb, line 47
def connect_to_new(tenant)
  return reset if tenant.nil?

  Apartment.connection.execute "use `#{environmentify(tenant)}`"

rescue ActiveRecord::StatementInvalid => exception
  Apartment::Tenant.reset
  raise_connect_error!(tenant, exception)
end
process_excluded_model(model) click to toggle source
# File lib/apartment/adapters/mysql2_adapter.rb, line 57
def process_excluded_model(model)
  model.constantize.tap do |klass|
    # Ensure that if a schema *was* set, we override
    table_name = klass.table_name.split('.', 2).last

    klass.table_name = "#{default_tenant}.#{table_name}"
  end
end
reset_on_connection_exception?() click to toggle source
# File lib/apartment/adapters/mysql2_adapter.rb, line 66
def reset_on_connection_exception?
  true
end