module FourthBase

Constants

VERSION

Public Class Methods

config(env = nil) click to toggle source
# File lib/fourth_base.rb, line 15
def self.config(env = nil)
  config = ActiveRecord::Base.configurations[Railtie.config_key]
  config ? config[env || Rails.env] : nil
end
on_base() { || ... } click to toggle source
# File lib/fourth_base/on_base.rb, line 6
def self.on_base
  already_on_base = is_on_base
  if already_on_base
    yield
    return
  end
  original_config = ActiveRecord::Tasks::DatabaseTasks.current_config
  original_configurations = ActiveRecord::Base.configurations
  original_migrations_path = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
  original_db_dir = ActiveRecord::Tasks::DatabaseTasks.db_dir
  ActiveRecord::Tasks::DatabaseTasks.current_config = config
  ActiveRecord::Base.configurations = original_configurations[Railtie.config_key]
  ActiveRecord::Base.establish_connection(config)
  ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [FourthBase::Railtie.fullpath('migrate')]
  ActiveRecord::Tasks::DatabaseTasks.db_dir = FourthBase::Railtie.fullpath
  ActiveRecord::Migrator.migrations_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
  self.is_on_base = true
  yield
ensure
  unless already_on_base
    ActiveRecord::Base.configurations = original_configurations
    ActiveRecord::Tasks::DatabaseTasks.migrations_paths = original_migrations_path
    ActiveRecord::Tasks::DatabaseTasks.db_dir = original_db_dir
    ActiveRecord::Migrator.migrations_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
    ActiveRecord::Tasks::DatabaseTasks.current_config = original_config
    ActiveRecord::Base.establish_connection(original_config)
    self.is_on_base = false
  end
end