小编jee*_*eem的帖子

rspec中的多线程ActiveRecord请求

我试图在测试中重新创建一个竞争条件,所以我可以尝试一些解决方案.我发现在我在测试中创建的线程中,ActiveRecord总是返回0表示计数,nil表示查找.例如,表"foos"中有3行:

  it "whatever" do
    puts Foo.count
    5.times do
      Thread.new do
        puts Foo.count
      end
    end
  end
Run Code Online (Sandbox Code Playgroud)

将打印

3
0
0
0
0
0
Run Code Online (Sandbox Code Playgroud)

test.log显示预期的查询,预期6次:

 SELECT count(*) AS count_all FROM `active_agents`
Run Code Online (Sandbox Code Playgroud)

知道这里发生了什么吗?

ruby activerecord multithreading rspec ruby-on-rails

8
推荐指数
1
解决办法
2734
查看次数