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:
parent
d8c9c80a71
commit
fd6c8cdfe6
3 changed files with 13 additions and 20 deletions
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue