mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
standardize database_configuration to a hash
make connection_url_to_hash a class method This als prevents loading database.yml if it doesn't exist but DATABASE_URL does
This commit is contained in:
parent
ebae71a67a
commit
4bdaf95b82
3 changed files with 9 additions and 7 deletions
|
@ -38,7 +38,7 @@ module ActiveRecord
|
|||
private
|
||||
def resolve_string_connection(spec) # :nodoc:
|
||||
hash = configurations.fetch(spec) do |k|
|
||||
connection_url_to_hash(k)
|
||||
self.class.connection_url_to_hash(k)
|
||||
end
|
||||
|
||||
raise(AdapterNotSpecified, "#{spec} database is not configured") unless hash
|
||||
|
@ -69,7 +69,7 @@ module ActiveRecord
|
|||
SIMPLE_INT = /\A\d+\z/
|
||||
SIMPLE_FLOAT = /\A\d+\.\d+\z/
|
||||
|
||||
def connection_url_to_hash(url) # :nodoc:
|
||||
def self.connection_url_to_hash(url) # :nodoc:
|
||||
config = URI.parse url
|
||||
adapter = config.scheme
|
||||
adapter = "postgresql" if adapter == "postgres"
|
||||
|
|
|
@ -141,9 +141,7 @@ module ActiveRecord
|
|||
# and then establishes the connection.
|
||||
initializer "active_record.initialize_database" do |app|
|
||||
ActiveSupport.on_load(:active_record) do
|
||||
unless ENV['DATABASE_URL']
|
||||
self.configurations = app.config.database_configuration
|
||||
end
|
||||
self.configurations = app.config.database_configuration
|
||||
establish_connection
|
||||
end
|
||||
end
|
||||
|
|
|
@ -101,8 +101,12 @@ module Rails
|
|||
# contents of the file are processed via ERB before being sent through
|
||||
# YAML::load.
|
||||
def database_configuration
|
||||
require 'erb'
|
||||
YAML.load ERB.new(IO.read(paths["config/database"].first)).result
|
||||
if ENV['DATABASE_URL']
|
||||
{Rails.env => ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.connection_url_to_hash(ENV['DATABASE_URL']).stringify_keys}
|
||||
else
|
||||
require 'erb'
|
||||
YAML.load ERB.new(IO.read(paths["config/database"].first)).result
|
||||
end
|
||||
rescue Psych::SyntaxError => e
|
||||
raise "YAML syntax error occurred while parsing #{paths["config/database"].first}. " \
|
||||
"Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
|
||||
|
|
Loading…
Reference in a new issue