class StandaloneMigrations::Configurator

Public Class Methods

environments_config() { |proxy| ... } click to toggle source
# File lib/standalone_migrations/configurator.rb, line 29
def self.environments_config
  proxy = InternalConfigurationsProxy.new(load_configurations)
  yield(proxy) if block_given?
end
load_configurations() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 23
def self.load_configurations
  @env_config ||= Rails.application.config.database_configuration
  ActiveRecord::Base.configurations = @env_config
  @env_config
end
new(options = {}) click to toggle source
# File lib/standalone_migrations/configurator.rb, line 34
def initialize(options = {})
  default_schema = ENV['SCHEMA'] || ActiveRecord::Tasks::DatabaseTasks.schema_file(ActiveRecord::Base.schema_format)
  defaults = {
    :config       => "db/config.yml",
    :migrate_dir  => "db/migrate",
    :root         => Pathname.pwd,
    :seeds        => "db/seeds.rb",
    :schema       => default_schema
  }
  @options = load_from_file(defaults.dup) || defaults.merge(options)

  ENV['SCHEMA'] = schema
  Rails.application.config.root = root
  Rails.application.config.paths["config/database"] = config
  Rails.application.config.paths["db/migrate"] = migrate_dir
  Rails.application.config.paths["db/seeds.rb"] = seeds
end

Public Instance Methods

config() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 52
def config
  @options[:config]
end
config_for(environment) click to toggle source
# File lib/standalone_migrations/configurator.rb, line 76
def config_for(environment)
  config_for_all[environment.to_s]
end
config_for_all() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 72
def config_for_all
  Configurator.load_configurations.dup
end
migrate_dir() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 56
def migrate_dir
  @options[:migrate_dir]
end
root() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 60
def root
  @options[:root]
end
schema() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 68
def schema
  @options[:schema]
end
seeds() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 64
def seeds
  @options[:seeds]
end

Private Instance Methods

configuration_file() click to toggle source
# File lib/standalone_migrations/configurator.rb, line 82
def configuration_file
  if !ENV['DATABASE']
    ".standalone_migrations"
  else
    ".#{ENV['DATABASE']}.standalone_migrations"
  end
end
load_from_file(defaults) click to toggle source
# File lib/standalone_migrations/configurator.rb, line 90
def load_from_file(defaults)
  return nil unless File.exists? configuration_file
  config = YAML.load( ERB.new(IO.read(configuration_file)).result )
  {
    :config       => config["config"] ? config["config"]["database"] : defaults[:config],
    :migrate_dir  => (config["db"] || {})["migrate"] || defaults[:migrate_dir],
    :root         => config["root"] || defaults[:root],
    :seeds        => (config["db"] || {})["seeds"] || defaults[:seeds],
    :schema       => (config["db"] || {})["schema"] || defaults[:schema]
  }
end