class Multibase::Config

Attributes

key[R]
settings[R]

Public Class Methods

new(key, settings) click to toggle source
# File lib/multibase/config.rb, line 7
def initialize(key, settings)
  @key      = key.to_s
  @settings = HashWithIndifferentAccess.new(settings)
end

Public Instance Methods

apply(new_settings = settings) click to toggle source
# File lib/multibase/config.rb, line 36
def apply(new_settings = settings)
  Rails.application.config.multibase.current_settings = new_settings
  ActiveRecord::Base.configurations = new_settings
  ActiveRecord::Tasks::DatabaseTasks.current_config = new_settings
  connection_dir_path = Multibase::Railtie.fullpath(key)
  migration_paths = [connection_dir_path.join('migrate')]
  ActiveRecord::Tasks::DatabaseTasks.migrations_paths = migration_paths
  ActiveRecord::Tasks::DatabaseTasks.db_dir = connection_dir_path
  ActiveRecord::Migrator.migrations_paths = migration_paths
  ActiveRecord::Base.establish_connection new_settings[Rails.env]
end
current_settings() click to toggle source
# File lib/multibase/config.rb, line 32
def current_settings
  settings[Rails.env]
end
db_dir() click to toggle source
# File lib/multibase/config.rb, line 16
def db_dir
  @db_dir ||= db_root.join(key).tap { |dir| FileUtils.mkdir_p(dir) }
end
db_migrate() click to toggle source
# File lib/multibase/config.rb, line 20
def db_migrate
  @db_migrate ||= db_dir.join('migrate').tap { |dir| FileUtils.mkdir_p dir }
end
db_root() click to toggle source
# File lib/multibase/config.rb, line 12
def db_root
  @db_root ||= Rails.root.join('db').tap { |dir| FileUtils.mkdir_p dir }
end
db_seed() click to toggle source
# File lib/multibase/config.rb, line 24
def db_seed
  @db_seed ||= db_dir.join('seed.rb')
end
load_seed() click to toggle source
# File lib/multibase/config.rb, line 28
def load_seed
  load(db_seed) if db_seed.exist?
end