Skip to content

Commit

Permalink
Remove deprecated access to connection specification using a string a…
Browse files Browse the repository at this point in the history
…cessor.

Now all strings will be handled as a URL.
  • Loading branch information
rafaelfranca committed Jan 4, 2015
1 parent a939506 commit efdc20f
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 58 deletions.
6 changes: 6 additions & 0 deletions activerecord/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
* Remove deprecated access to connection specification using a string acessor.

Now all strings will be handled as a URL.

*Rafael Mendonça França*

* Change the default `null` value for `timestamps` to `false`.

*Rafael Mendonça França*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
require 'uri'
require 'active_support/core_ext/string/filters'

module ActiveRecord
module ConnectionAdapters
Expand Down Expand Up @@ -210,30 +209,12 @@ def resolve_connection(spec)
when Symbol
resolve_symbol_connection spec
when String
resolve_string_connection spec
resolve_url_connection spec
when Hash
resolve_hash_connection spec
end
end

def resolve_string_connection(spec)
# Rails has historically accepted a string to mean either
# an environment key or a URL spec, so we have deprecated
# this ambiguous behaviour and in the future this function
# can be removed in favor of resolve_url_connection.
if configurations.key?(spec) || spec !~ /:/
ActiveSupport::Deprecation.warn(<<-MSG.squish)
Passing a string to ActiveRecord::Base.establish_connection for a
configuration lookup is deprecated, please pass a symbol
(#{spec.to_sym.inspect}) instead.
MSG

resolve_symbol_connection(spec)
else
resolve_url_connection(spec)
end
end

# Takes the environment such as +:production+ or +:development+.
# This requires that the @configurations was initialized with a key that
# matches.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,34 +51,6 @@ def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
assert_equal expected, actual
end

def test_resolver_with_database_uri_and_and_current_env_string_key
ENV['DATABASE_URL'] = "postgres://localhost/foo"
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
actual = assert_deprecated { resolve_spec("default_env", config) }
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
assert_equal expected, actual
end

def test_resolver_with_database_uri_and_and_current_env_string_key_and_rails_env
ENV['DATABASE_URL'] = "postgres://localhost/foo"
ENV['RAILS_ENV'] = "foo"

config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
actual = assert_deprecated { resolve_spec("foo", config) }
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
assert_equal expected, actual
end

def test_resolver_with_database_uri_and_and_current_env_string_key_and_rack_env
ENV['DATABASE_URL'] = "postgres://localhost/foo"
ENV['RACK_ENV'] = "foo"

config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
actual = assert_deprecated { resolve_spec("foo", config) }
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
assert_equal expected, actual
end

def test_resolver_with_database_uri_and_known_key
ENV['DATABASE_URL'] = "postgres://localhost/foo"
config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
Expand All @@ -95,16 +67,6 @@ def test_resolver_with_database_uri_and_unknown_symbol_key
end
end

def test_resolver_with_database_uri_and_unknown_string_key
ENV['DATABASE_URL'] = "postgres://localhost/foo"
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
assert_deprecated do
assert_raises AdapterNotSpecified do
resolve_spec("production", config)
end
end
end

def test_resolver_with_database_uri_and_supplied_url
ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
Expand Down

0 comments on commit efdc20f

Please sign in to comment.