1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #29609 from tsukasaoishi/query_cache_from_beginning

Enable query cache if set a configurations
This commit is contained in:
Rafael França 2017-06-28 14:26:57 -04:00 committed by Ryuta Kamizono
parent d8c9c80a71
commit fd6c8cdfe6
3 changed files with 13 additions and 20 deletions

View file

@ -1,3 +1,8 @@
* Query cache was unavailable when entering the `ActiveRecord::Base.cache` block
without being connected.
*Tsukasa Oishi*
* Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong
ar_internal_metadata's data for a test database.

View file

@ -5,20 +5,20 @@ module ActiveRecord
# Enable the query cache within the block if Active Record is configured.
# If it's not, it will execute the given block.
def cache(&block)
if connected?
connection.cache(&block)
else
if configurations.empty?
yield
else
connection.cache(&block)
end
end
# Disable the query cache within the block if Active Record is configured.
# If it's not, it will execute the given block.
def uncached(&block)
if connected?
connection.uncached(&block)
else
if configurations.empty?
yield
else
connection.uncached(&block)
end
end
end

View file

@ -320,18 +320,7 @@ class QueryCacheTest < ActiveRecord::TestCase
end
end
def test_cache_is_available_when_connection_is_connected
conf = ActiveRecord::Base.configurations
ActiveRecord::Base.configurations = {}
Task.cache do
assert_queries(1) { Task.find(1); Task.find(1) }
end
ensure
ActiveRecord::Base.configurations = conf
end
def test_cache_is_not_available_when_using_a_not_connected_connection
def test_cache_is_available_when_using_a_not_connected_connection
with_temporary_connection_pool do
spec_name = Task.connection_specification_name
conf = ActiveRecord::Base.configurations["arunit"].merge("name" => "test2")
@ -348,8 +337,7 @@ class QueryCacheTest < ActiveRecord::TestCase
end
ActiveRecord::FixtureSet.create_fixtures(self.class.fixture_path, ["tasks"], {}, ActiveRecord::Base)
end
Task.connection # warmup postgresql connection setup queries
assert_queries(2) { Task.find(1); Task.find(1) }
assert_queries(1) { Task.find(1); Task.find(1) }
ensure
ActiveRecord::Base.connection_handler.remove_connection(Task.connection_specification_name)
Task.connection_specification_name = spec_name