Class: Multibase::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/multibase/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key, settings) ⇒ Config

Returns a new instance of Config.



7
8
9
10
# File 'lib/multibase/config.rb', line 7

def initialize(key, settings)
  @key      = key.to_s
  @settings = HashWithIndifferentAccess.new(settings)
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



3
4
5
# File 'lib/multibase/config.rb', line 3

def key
  @key
end

#settingsObject (readonly)

Returns the value of attribute settings.



5
6
7
# File 'lib/multibase/config.rb', line 5

def settings
  @settings
end

Instance Method Details

#apply(new_settings = settings) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# 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_settingsObject



32
33
34
# File 'lib/multibase/config.rb', line 32

def current_settings
  settings[Rails.env]
end

#db_dirObject



16
17
18
# File 'lib/multibase/config.rb', line 16

def db_dir
  @db_dir ||= db_root.join(key).tap { |dir| FileUtils.mkdir_p(dir) }
end

#db_migrateObject



20
21
22
# File 'lib/multibase/config.rb', line 20

def db_migrate
  @db_migrate ||= db_dir.join('migrate').tap { |dir| FileUtils.mkdir_p dir }
end

#db_rootObject



12
13
14
# File 'lib/multibase/config.rb', line 12

def db_root
  @db_root ||= Rails.root.join('db').tap { |dir| FileUtils.mkdir_p dir }
end

#db_seedObject



24
25
26
# File 'lib/multibase/config.rb', line 24

def db_seed
  @db_seed ||= db_dir.join('seed.rb')
end

#load_seedObject



28
29
30
# File 'lib/multibase/config.rb', line 28

def load_seed
  load(db_seed) if db_seed.exist?
end