【发布时间】:2017-01-06 19:54:09
【问题描述】:
我的模型 Foo 上有一个 after_create_commit 回调,如下所示:
after_create_commit { LogBroadcastJob.perform_later self }
我已将 perform 方法简化为返回 nil 以简化操作。
当我使用 factory_girl 在 RSpec 测试中创建 Foo 实例时,测试套件会冻结。这只发生在我使用该回调测试模型时。
FactoryGirl.create :foo
当我 Ctl+C 退出我的测试套件时,它无法终止该进程。我必须找到仍在使用我的数据库(Postgresql)的进程并将其杀死,这意味着我在命令行上看不到任何错误。如果我再次运行我的测试套件,它会创建另一个我必须找到并杀死的进程。
这听起来对任何人来说都很熟悉吗?我如何在这里找到有用的错误?
也许相关:我不久前从 Rails 4.2 升级到了 5.0.0.1。
【问题讨论】:
-
Rails 5 围绕并发进行了一些更改。如果您使用的任何依赖项正在创建线程,那么您可能会遇到类重新加载的问题。 More info on this here.
标签: ruby rspec ruby-on-rails-5