class DefaultScopingWithThreadTest
Public Instance Methods
test_default_scope_is_threadsafe()
click to toggle source
# File activerecord/test/cases/scoping/default_scoping_test.rb, line 523 def test_default_scope_is_threadsafe 2.times { ThreadsafeDeveloper.unscoped.create! } threads = [] assert_not_equal 1, ThreadsafeDeveloper.unscoped.count barrier_1 = Concurrent::CyclicBarrier.new(2) barrier_2 = Concurrent::CyclicBarrier.new(2) threads << Thread.new do Thread.current[:default_scope_delay] = -> { barrier_1.wait; barrier_2.wait } assert_equal 1, ThreadsafeDeveloper.all.to_a.count ThreadsafeDeveloper.connection.close end threads << Thread.new do Thread.current[:default_scope_delay] = -> { barrier_2.wait } barrier_1.wait assert_equal 1, ThreadsafeDeveloper.all.to_a.count ThreadsafeDeveloper.connection.close end threads.each(&:join) ensure ThreadsafeDeveloper.unscoped.destroy_all end
test_default_scoping_with_threads()
click to toggle source
# File activerecord/test/cases/scoping/default_scoping_test.rb, line 514 def test_default_scoping_with_threads 2.times do Thread.new { assert_includes DeveloperOrderedBySalary.all.to_sql, "salary DESC" DeveloperOrderedBySalary.connection.close }.join end end