FactoryGirl.create issues "LocalJumpError: no block given (yield)" with Rails 5

FactoryGirl.create issues "LocalJumpError: no block given (yield)" with Rails 5

我正在将我的应用程序升级到 Rails 5 当 运行 启用 rails 5 的测试时,我开始在几个对象创建语句上得到 "LocalJumpError: no block given (yield)",例如:

let!(:entity) { create(:entity) }

我升级到 Rails 5.0.0 后开始出现这种情况 我尝试在该行上使用构建而不是创建,但在这种情况下不会出现错误。

有没有人遇到过类似的问题?

我的实体工厂是这个:

FactoryGirl.define do
  factory :entity do
    entity_type 'A'
    account { create(:account) }
    ilk []
    after(:build) do |entity|
      entity.names << build(:name)
      entity.addresses << build(:address)
    end

    trait :incomplete do
      incomplete true
    end
  end

我的 Gemfile 看起来像这样:https://jpst.it/Lb6N

编辑

我发现问题不在于 FactoryGirl,而在于 Mongoid gem。我在 JIRA 上为该项目开了一张票。这是 link,但您需要拥有一个可以访问 JIRA 上的 Mongoid 项目的帐户:https://jira.mongodb.org/browse/MONGOID-4302

这个ticket的详细信息是通过运行 rspec -b 看到的痕迹,我在mongoid gem:[=15=这一行确定了问题]

https://github.com/mongodb/mongoid/blob/master/lib/mongoid/clients/options.rb#L25

如果我将该行 (yield self) 替换为以下内容,问题就会消失:

自己

不过我不确定这是否是一个可行的解决方案,所以我打开了之前提到的票证以获取 mongoid 的反馈并看看可以做什么。

收到任何反馈后我会再次更新。

经过大量调试后,我在 mongoid_token gem 的本地分支上找到了问题的根源,这导致了这个奇怪的问题。 Mongoid 和 FactoryGirl gems 与此问题无关,原始的 mongoid-token gem.