diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2017-06-28 14:26:57 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-28 14:26:57 -0400 |
commit | 8adef0b8336dfc9e75fe036f7957937bfaf6f2f4 (patch) | |
tree | a642f6e0f839e7fc7fdd8a64bb0be7a55dac5fd1 /activerecord | |
parent | da5dbada0464a9f1d17154f1cf9e51029b3efa48 (diff) | |
parent | 1b4360dea81b0c04589a62b8af7c555cfc0509ca (diff) | |
download | rails-8adef0b8336dfc9e75fe036f7957937bfaf6f2f4.tar.gz rails-8adef0b8336dfc9e75fe036f7957937bfaf6f2f4.tar.bz2 rails-8adef0b8336dfc9e75fe036f7957937bfaf6f2f4.zip |
Merge pull request #29609 from tsukasaoishi/query_cache_from_beginning
Enable query cache if set a configurations
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG.md | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/query_cache.rb | 12 | ||||
-rw-r--r-- | activerecord/test/cases/query_cache_test.rb | 16 |
3 files changed, 13 insertions, 20 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index f780029a18..bbf23c90df 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,8 @@ +* Query cache was unavailable when entering the ActiveRecord::Base.cache block + without being connected. + + *Tsukasa Oishi* + * Previously, when building records using a `has_many :through` association, if the child records were deleted before the parent was saved, they would still be persisted. Now, if child records are deleted before the parent is saved diff --git a/activerecord/lib/active_record/query_cache.rb b/activerecord/lib/active_record/query_cache.rb index ec246e97bc..e4c2e1f86f 100644 --- a/activerecord/lib/active_record/query_cache.rb +++ b/activerecord/lib/active_record/query_cache.rb @@ -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 diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index c2d40f2940..3962453f75 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -321,18 +321,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") @@ -349,8 +338,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 |