Fabrication gem让我无法运行 rails 控制台,因为它抱怨我用它创建的工厂模型已经在我的应用程序/模型中定义。
例如,我有一个Issue
模型app/models
,看起来像:
class Issue
include Virtus.model
attribute :id, String, :default => ""
attribute :summary, String, :default => ""
end
我正在创建此模型的示例,同时进行spec/factories/issue.rb
如下测试:
Fabricator(:issue) do
id "00001"
summary "test summary"
end
无论如何,我认为 Rails 控制台吓坏了,因为问题有两个定义。但是,我的 rspec 测试和应用程序都运行良好。
我得到的具体错误是:
/Users/beckah/.rvm/gems/ruby-2.4.0/gems/fabrication-2.16.3/lib/fabrication/schematic/manager.rb:62:in `raise_if_registered': 'issue' is already defined (Fabrication::DuplicateFabricatorError)
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/fabrication-2.16.3/lib/fabrication/schematic/manager.rb:28:in `register'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/fabrication-2.16.3/lib/fabrication.rb:60:in `Fabricator'
from /Users/beckah/Perforce/beckah_Beckahs-MacBook-Pro_CO-1:_MVP_Tree_View/nemedio_qms/spec/factories/issues.rb:1:in `<top (required)>'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `block in load'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:258:in `load_dependency'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.4/lib/active_support/dependencies.rb:286:in `load'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/find_definitions.rb:20:in `block (2 levels) in find_definitions'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/find_definitions.rb:19:in `each'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/find_definitions.rb:19:in `block in find_definitions'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/find_definitions.rb:15:in `each'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/find_definitions.rb:15:in `find_definitions'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl-4.8.0/lib/factory_girl/reload.rb:6:in `reload'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/factory_girl_rails-4.8.0/lib/factory_girl_rails/railtie.rb:24:in `block (2 levels) in <class:Railtie>'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:263:in `block in invoke_after_fork_callbacks'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:262:in `each'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:262:in `invoke_after_fork_callbacks'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:198:in `block in serve'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `fork'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:171:in `serve'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
from /Users/beckah/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
from /Users/beckah/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/beckah/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'
如何rails console
在为我的 rspec 测试实现 Fabrication 的同时加载?