gpt4 book ai didi

ruby-on-rails - rspec 中的多线程 ActiveRecord 请求

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:34 27 4
gpt4 key购买 nike

我正在尝试在测试中重新创建竞争条件,以便尝试一些解决方案。我发现在我在测试中创建的线程中,ActiveRecord 总是为计数返回 0,为查找返回 nil。例如,表“foos”中有 3 行:

  it "whatever" do
puts Foo.count
5.times do
Thread.new do
puts Foo.count
end
end
end

将打印

3
0
0
0
0
0

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

 SELECT count(*) AS count_all FROM `active_agents`

知道这里发生了什么吗?

最佳答案

我假设 ActiveRecord 为每个线程打开一个专用的数据库连接。由于每个 RSpec 示例都包含在事务中,因此其他线程可能看不到更改。

尝试禁用该规范的事务固定装置。

describe "thread test" do
self.use_transactional_fixtures = false

it "whatever" do
puts Foo.count
5.times do
Thread.new do
puts Foo.count
end
end
end
end

关于ruby-on-rails - rspec 中的多线程 ActiveRecord 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com