Próbuję odtworzyć warunki wyścigu w teście, więc mogę wypróbować niektóre rozwiązania. Uważam, że w wątkach, które tworzę w moim teście, ActiveRecord zawsze zwraca 0 dla zliczeń i zero dla znalezisk. Na przykład, z 3 wierszy w tabeli "Foos":Wielowątkowe żądania ActiveRecord w rspec
it "whatever" do
puts Foo.count
5.times do
Thread.new do
puts Foo.count
end
end
end
drukuje
3
0
0
0
0
0
test.log pokazuje oczekiwaną zapytanie, oczekiwane 6 razy:
SELECT count(*) AS count_all FROM `active_agents`
Any pomysł, co tu się dzieje?
Miałem ten sam problem, który opisuje jeem, a rozwiązanie @ henning-koch rozwiązało je dla mnie. Dodałem kod do powyższego rozwiązania (musi to być zaakceptowane przez kogoś innego). –
Bardzo ładna sztuczka! –