diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index dd55f2bde4..79f8edf79a 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -287,16 +287,10 @@ RSpec.describe Tag do tag_name_upper = 'Rails' tag_name_lower = 'rails' - threads = [] - - 2.times do |i| - threads << Thread.new do - described_class.find_or_create_by_names(i.zero? ? tag_name_upper : tag_name_lower) - end + multi_threaded_execution(2) do |index| + described_class.find_or_create_by_names(index.zero? ? tag_name_upper : tag_name_lower) end - threads.each(&:join) - tags = described_class.where('lower(name) = ?', tag_name_lower.downcase) expect(tags.count).to eq(1) expect(tags.first.name.downcase).to eq(tag_name_lower.downcase) diff --git a/spec/support/threading_helpers.rb b/spec/support/threading_helpers.rb index 4ca8c9865a..cb2a70fb7a 100644 --- a/spec/support/threading_helpers.rb +++ b/spec/support/threading_helpers.rb @@ -6,10 +6,10 @@ module ThreadingHelpers def multi_threaded_execution(thread_count) barrier = Concurrent::CyclicBarrier.new(thread_count) - threads = Array.new(thread_count) do + threads = Array.new(thread_count) do |index| Thread.new do barrier.wait - yield + yield(index) end end