lib/sequel_rails/configuration.rb in sequel-rails-0.7.0 vs lib/sequel_rails/configuration.rb in sequel-rails-0.8.0
- old
+ new
@@ -1,17 +1,15 @@
require 'active_support/core_ext/class/attribute_accessors'
module SequelRails
-
mattr_accessor :configuration
def self.setup(environment)
configuration.connect environment
end
class Configuration < ActiveSupport::OrderedOptions
-
def self.for(root, database_yml_hash)
::SequelRails.configuration ||= begin
config = new
config.root = root
config.raw = database_yml_hash
@@ -33,91 +31,87 @@
def environment_for(name)
environments[name.to_s] || environments[name.to_sym]
end
def environments
- @environments ||= raw.inject({}) do |normalized, environment|
+ @environments ||= raw.reduce({}) do |normalized, environment|
name, config = environment.first, environment.last
normalized[name] = normalize_repository_config(config)
normalized
end
end
def connect(environment)
normalized_config = environment_for environment
- db = if normalized_config['url']
+ if normalized_config['url']
::Sequel.connect normalized_config['url'], normalized_config
else
::Sequel.connect normalized_config
- end
- after_connect.call if after_connect.respond_to?(:call)
- db
+ end.tap { after_connect.call if after_connect.respond_to?(:call) }
end
- private
+ private
def default_schema_dump
- not %w(test production).include? Rails.env
+ !%w(test production).include? Rails.env
end
def normalize_repository_config(hash)
config = {}
hash.each do |key, value|
config[key.to_s] =
- if key.to_s == 'port'
- value.to_i
- elsif key.to_s == 'adapter' && value == 'sqlite3'
- 'sqlite'
- elsif key.to_s == 'database' && (hash['adapter'] == 'sqlite3' ||
- hash['adapter'] == 'sqlite' ||
- hash[:adapter] == 'sqlite3' ||
- hash[:adapter] == 'sqlite')
- value == ':memory:' ? value : File.expand_path((hash['database'] || hash[:database]), root)
- elsif key.to_s == 'adapter' && value == 'postgresql'
- 'postgres'
- else
- value
- end
+ if key.to_s == 'port'
+ value.to_i
+ elsif key.to_s == 'adapter' && value == 'sqlite3'
+ 'sqlite'
+ elsif key.to_s == 'database' && (hash['adapter'] == 'sqlite3' ||
+ hash['adapter'] == 'sqlite' ||
+ hash[:adapter] == 'sqlite3' ||
+ hash[:adapter] == 'sqlite')
+ value == ':memory:' ? value : File.expand_path((hash['database'] || hash[:database]), root)
+ elsif key.to_s == 'adapter' && value == 'postgresql'
+ 'postgres'
+ else
+ value
+ end
end
# always use jdbc when running jruby
if SequelRails.jruby?
if config['adapter']
case config['adapter'].to_sym
- when :postgres
- config['adapter'] = :postgresql
+ when :postgres
+ config['adapter'] = :postgresql
end
config['adapter'] = "jdbc:#{config['adapter']}"
end
end
# override max connections if requested in app configuration
config['max_connections'] = max_connections if max_connections
config['search_path'] = search_path if search_path
# some adapters only support an url
- if config['adapter'] && config['adapter'] =~ /^(jdbc|do):/ && !config.has_key?('url')
+ if config['adapter'] && config['adapter'] =~ /^(jdbc|do):/ && !config.key?('url')
params = {}
config.each do |k, v|
- next if ['adapter', 'host', 'port', 'database'].include?(k)
+ next if %w(adapter host port database).include?(k)
if k == 'search_path'
- v = v.split(',').map &:strip unless v.is_a? Array
- v = URI::escape(v.join(','))
+ v = v.split(',').map(&:strip) unless v.is_a? Array
+ v = URI.escape(v.join(','))
end
params[k] = v
end
params_str = params.map { |k, v| "#{k}=#{v}" }.join('&')
port = config['port'] ? ":#{config['port']}" : ''
- config['url'] ||= case config['adapter']
- when /sqlite/
- "%s:%s" % [config['adapter'], config['database']]
+ config['url'] ||=
+ if config['adapter'].include?('sqlite')
+ sprintf('%s:%s', config['adapter'], config['database'])
else
- "%s://%s%s/%s?%s" % [config['adapter'], config['host'], port, config['database'], params_str]
+ sprintf('%s://%s%s/%s?%s', config['adapter'], config['host'], port, config['database'], params_str)
end
end
config
end
-
end
-
end