class Apartment::Adapters::AbstractAdapter
def connect_to_new(database)
def connect_to_new(database) ActiveRecord::Base.establish_connection multi_tenantify(database) d
def create(database)
-
database
(String
) -- Database name
def create(database) # TODO create_database unless using_schemas? process(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
def create_schema
def create_schema # noop end
def current_database
def current_database ActiveRecord::Base.connection.current_database end
def import_database_schema
def import_database_schema load_or_abort("#{Rails.root}/db/schema.rb") end
def initialize(config, defaults)
-
defaults
(Hash
) -- Some default options -
config
(Hash
) -- Database config
def initialize(config, defaults) @config = config @defaults = defaults end
def load_or_abort(file)
def load_or_abort(file) if File.exists?(file) load(file) else abort %{#{file} doesn't exist yet} end end
def multi_tenantify(database)
def multi_tenantify(database) config.clone.tap do |config| config['database'].gsub!(Rails.env.to_s, "#{database}_#{Rails.env}") nd d
def process(database = nil)
-
database
(String?
) -- Database or schema to connect to, will reset if no database passed in
def process(database = nil) current_db = current_database switch(database) yield if block_given? sure switch(current_db) nd
def reset
def reset ActiveRecord::Base.establish_connection @config end
def sanitize(database)
def sanitize(database) database.gsub(/[\W]/,'') end
def seed_data
def seed_data load_or_abort("#{Rails.root}/db/seeds.rb") end
def switch(database = nil)
def switch(database = nil) # Just connect to default db and return eturn reset if database.nil? connect_to_new(database) d
def using_schemas?
def using_schemas? false end