Class: Apartment::Adapters::AbstractAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/apartment/adapters/abstract_adapter.rb

Direct Known Subclasses

MysqlAdapter, PostgresqlAdapter

Instance Method Summary collapse

Constructor Details

#initialize(config, defaults) ⇒ AbstractAdapter

@constructor

@param {Hash} config Database config
@param {Hash} defaults Some default options


13
14
15
16
# File 'lib/apartment/adapters/abstract_adapter.rb', line 13

def initialize(config, defaults)
  @config = config
  @defaults = defaults
end

Instance Method Details

#connect_and_reset(database) ⇒ Object Also known as: process

Connect to db or schema, do stuff, reset

@param {String} database Database or schema to connect to


21
22
23
24
25
26
# File 'lib/apartment/adapters/abstract_adapter.rb', line 21

def connect_and_reset(database)
 connect_to_new(database)
 yield if block_given?
		  ensure
 reset
end

#create(database) ⇒ Object

Create new postgres schema

@param {String} database Database name


32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/apartment/adapters/abstract_adapter.rb', line 32

def create(database)
    # TODO create_database unless using_schemas?

	connect_and_reset(database) do
			import_database_schema

			# Manually init schema migrations table (apparently there were issues with Postgres when this isn't done)
			ActiveRecord::Base.connection.initialize_schema_migrations_table
			
      # Seed data if appropriate
      seed_data if Apartment.seed_after_create
	end
end

#resetObject

Reset the base connection



47
48
49
# File 'lib/apartment/adapters/abstract_adapter.rb', line 47

def reset
  ActiveRecord::Base.establish_connection @config
end

#switch(database = nil) ⇒ Object

Switch to new connection (or schema if appopriate)



52
53
54
55
56
57
# File 'lib/apartment/adapters/abstract_adapter.rb', line 52

def switch(database = nil)
    # Just connect to default db and return
	return reset if database.nil?

    connect_to_new(database)
end