mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #14152 from schneems/schneems/fix-ar-wtf-why-is-there-no-environment
Handle missing environment from non empty config
This commit is contained in:
commit
b189f2846a
2 changed files with 13 additions and 24 deletions
|
@ -93,16 +93,12 @@ module ActiveRecord
|
||||||
# the connection URL. This hash responds to any string key with
|
# the connection URL. This hash responds to any string key with
|
||||||
# resolved connection information.
|
# resolved connection information.
|
||||||
def default_url_hash
|
def default_url_hash
|
||||||
if @raw_config.blank?
|
Hash.new do |hash, key|
|
||||||
Hash.new do |hash, key|
|
hash[key] = if key.is_a? String
|
||||||
hash[key] = if key.is_a? String
|
ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(@url).to_hash
|
||||||
ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(@url).to_hash
|
else
|
||||||
else
|
nil
|
||||||
nil
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
|
||||||
{}
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,6 +17,14 @@ module ActiveRecord
|
||||||
ENV["DATABASE_URL"] = @previous_database_url
|
ENV["DATABASE_URL"] = @previous_database_url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_environment_does_not_exist_in_config_url_does_exist
|
||||||
|
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
||||||
|
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
||||||
|
actual = klass.new(config).resolve
|
||||||
|
expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
||||||
|
assert_equal expect_prod, actual["production"]
|
||||||
|
end
|
||||||
|
|
||||||
def test_string_connection
|
def test_string_connection
|
||||||
config = { "production" => "postgres://localhost/foo" }
|
config = { "production" => "postgres://localhost/foo" }
|
||||||
actual = klass.new(config).resolve
|
actual = klass.new(config).resolve
|
||||||
|
@ -69,21 +77,6 @@ module ActiveRecord
|
||||||
assert_equal nil, actual[:test]
|
assert_equal nil, actual[:test]
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_sting_with_database_url
|
|
||||||
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
|
||||||
|
|
||||||
config = { "production" => "postgres://localhost/foo" }
|
|
||||||
actual = klass.new(config).resolve
|
|
||||||
|
|
||||||
expected = { "production" =>
|
|
||||||
{ "adapter" => "postgresql",
|
|
||||||
"database" => "foo",
|
|
||||||
"host" => "localhost"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
assert_equal expected, actual
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_url_sub_key_with_database_url
|
def test_url_sub_key_with_database_url
|
||||||
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue