我正在将我的应用程序升级到Rails 5当在启用rails 5的情况下运行测试时,我开始在几个对象创建语句上得到"LocalJumpError:no block giving(yield)",比如以下语句:
let!(:entity) { create(:entity) }
这是在我升级到Rails 5.0.0之后开始发生的我试着在那一行使用build而不是create,但在这种情况下没有出现错误。
有人有类似的问题吗?
我的实体工厂是这样的:
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宝石。我在JIRA上为那个项目开了一张票。以下是链接,但您需要在JIRA拥有一个可以访问Mongoid项目的帐户:https://jira.mongodb.org/browse/MONGOID-4302
这个票证的细节是,通过运行rspec-b来查看跟踪,我在mongoid gem:上发现了这一行的问题
https://github.com/mongodb/mongoid/blob/master/lib/mongoid/clients/options.rb#L25
如果我用替换该行(自屈服),问题就会消失
自
然而,我不确定这是否是一个可行的解决方案,所以我打开了之前提到的罚单,以获得mongoid的反馈,看看能做些什么。
当我得到任何反馈时,我会再次更新。
经过大量调试,我在mongoid_token-gem的本地分支上发现了问题的根源,这就是导致这个奇怪问题的原因。Mongoid和FactoryGirl宝石与此问题无关,也与原始Mongoid代币宝石无关。