diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2019-02-04 08:46:10 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-04 08:46:10 -0500 |
commit | 7d85d3847e33f879c50626a1a097ad4f5d7bf897 (patch) | |
tree | cc408e16e9bad98ae05e56632fa9c82dd099657b /activerecord/test | |
parent | f4aed53e440a63ef617b4634f160f4c512824870 (diff) | |
parent | 183c0eb472a33e4f1f2cd9502f238d4b6027f887 (diff) | |
download | rails-7d85d3847e33f879c50626a1a097ad4f5d7bf897.tar.gz rails-7d85d3847e33f879c50626a1a097ad4f5d7bf897.tar.bz2 rails-7d85d3847e33f879c50626a1a097ad4f5d7bf897.zip |
Merge pull request #35089 from eileencodes/fix-query-cache-for-database-switching
Invalidate all query caches for current thread
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/query_cache_test.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index 04bbc7d136..eb32b690aa 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -502,6 +502,44 @@ class QueryCacheTest < ActiveRecord::TestCase }.call({}) end + def test_clear_query_cache_is_called_on_all_connections + skip "with in memory db, reading role won't be able to see database on writing role" if in_memory_db? + with_temporary_connection_pool do + ActiveRecord::Base.connection_handlers = { + writing: ActiveRecord::Base.default_connection_handler, + reading: ActiveRecord::ConnectionAdapters::ConnectionHandler.new + } + + ActiveRecord::Base.connected_to(role: :reading) do + ActiveRecord::Base.establish_connection(ActiveRecord::Base.configurations["arunit"]) + end + + mw = middleware { |env| + ActiveRecord::Base.connected_to(role: :reading) do + @topic = Topic.first + end + + assert @topic + + ActiveRecord::Base.connected_to(role: :writing) do + @topic.title = "It doesn't have to be crazy at work" + @topic.save! + end + + assert_equal "It doesn't have to be crazy at work", @topic.title + + ActiveRecord::Base.connected_to(role: :reading) do + @topic = Topic.first + assert_equal "It doesn't have to be crazy at work", @topic.title + end + } + + mw.call({}) + end + ensure + ActiveRecord::Base.connection_handlers = { writing: ActiveRecord::Base.default_connection_handler } + end + private def with_temporary_connection_pool |