class SequelRails::Configuration

Public Class Methods

for(root, database_yml_hash) click to toggle source
# File lib/sequel_rails/configuration.rb, line 12
def self.for(root, database_yml_hash)
  ::SequelRails.configuration ||= begin
    config = new
    config.root = root
    config.raw = database_yml_hash
    config
  end
end
new(*) click to toggle source
Calls superclass method
# File lib/sequel_rails/configuration.rb, line 21
def initialize(*)
  super
  self.root = Rails.root
  self.raw = nil
  self.logger = nil
  self.migration_dir = nil
  self.schema_dump = default_schema_dump
  self.load_database_tasks = true
  self.after_connect = nil
  self.after_new_connection = nil
  self.skip_connect = nil
  self.test_connect = true
end

Public Instance Methods

connect(environment) click to toggle source
# File lib/sequel_rails/configuration.rb, line 51
def connect(environment)
  normalized_config = environment_for environment

  unless (normalized_config.keys & %w[adapter url]).any?
    raise "Database not configured.\n" \
        'Please create config/database.yml or set DATABASE_URL in environment.'
  end

  if normalized_config['url']
    ::Sequel.connect normalized_config['url'], SequelRails.deep_symbolize_keys(normalized_config)
  else
    ::Sequel.connect SequelRails.deep_symbolize_keys(normalized_config)
  end.tap { after_connect.call if after_connect.respond_to?(:call) }
end
environment_for(name) click to toggle source
# File lib/sequel_rails/configuration.rb, line 35
def environment_for(name)
  environments[name.to_s] || environments[name.to_sym]
end
environments() click to toggle source
# File lib/sequel_rails/configuration.rb, line 39
def environments
  @environments ||= raw.reduce(
    # default config - use just the environment variable
    Hash.new(normalize_repository_config({}))
  ) do |normalized, environment|
    name = environment.first
    config = environment.last
    normalized[name] = normalize_repository_config(config)
    normalized
  end
end

Private Instance Methods

default_schema_dump() click to toggle source
# File lib/sequel_rails/configuration.rb, line 68
def default_schema_dump
  !%w[test production].include? Rails.env
end
normalize_repository_config(hash) click to toggle source
# File lib/sequel_rails/configuration.rb, line 72
def normalize_repository_config(hash)
  config = DbConfig.new hash, :root => root

  config['max_connections'] = max_connections if max_connections
  config['search_path'] = search_path if search_path
  config['servers'] = servers if servers
  config['test'] = test_connect
  config['after_connect'] = after_new_connection if after_new_connection

  url = ENV['DATABASE_URL']
  config['url'] ||= url if url

  # create the url if neccessary
  config['url'] ||= config.url if config['adapter'] =~ /^(jdbc|do):/

  config
end