From d0e95f45f3881e2b9cda44c2a2e74aad976297df Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Thu, 1 Aug 2019 12:49:32 -0700 Subject: [PATCH] Raise TypeError instead of infinite looping --- .../connection_adapters/connection_specification.rb | 2 +- .../test/cases/connection_specification/resolver_test.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/connection_adapters/connection_specification.rb b/activerecord/lib/active_record/connection_adapters/connection_specification.rb index 20041f0c85193..da41ed22b1d93 100644 --- a/activerecord/lib/active_record/connection_adapters/connection_specification.rb +++ b/activerecord/lib/active_record/connection_adapters/connection_specification.rb @@ -221,7 +221,7 @@ def resolve_connection(config_or_env, pool_name = nil) when Hash resolve_hash_connection config_or_env else - resolve_connection config_or_env + raise TypeError, "Invalid type for configuration. Expected Symbol, String, or Hash. Got #{config_or_env.inspect}" end end diff --git a/activerecord/test/cases/connection_specification/resolver_test.rb b/activerecord/test/cases/connection_specification/resolver_test.rb index 72be14f507780..a9aaf15099c9e 100644 --- a/activerecord/test/cases/connection_specification/resolver_test.rb +++ b/activerecord/test/cases/connection_specification/resolver_test.rb @@ -135,6 +135,12 @@ def test_spec_name_with_inline_config spec = spec("adapter" => "sqlite3") assert_equal "primary", spec.name, "should default to primary id" end + + def test_spec_with_invalid_type + assert_raises TypeError do + spec(Object.new) + end + end end end end