提交 fd6c8cdf 编写于 作者: R Rafael França 提交者: Ryuta Kamizono

Merge pull request #29609 from tsukasaoishi/query_cache_from_beginning

Enable query cache if set a configurations
上级 d8c9c80a
* 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.
......
......@@ -5,20 +5,20 @@ module ClassMethods
# 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
......
......@@ -320,18 +320,7 @@ def test_cache_is_ignored_for_locked_relations
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 @@ def test_cache_is_not_available_when_using_a_not_connected_connection
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册