2017-09-20 14 views
0

Fabrication gemは、私がFactoryモデルを使用していると文句を言うのでそれを使った作成は既に私のapp/modelsで定義されています。以下のように見えることspec/factories/issue.rbでのテスト中、私はこのモデルのサンプルを作成していrspecファクトリの実装時に、 'model_name'が既に定義されていて、 `rails console`を実行できません。

class Issue 
    include Virtus.model 

    attribute :id,  String, :default => "" 
    attribute :summary, String, :default => "" 

end 

Fabricator(:issue) do 
    id  "00001" 
    summary "test summary" 
end 

例えば、私は次のようになり、私のapp/modelsIssueモデルを持っていますとにかく、問題の2つの定義があるので、レールはフリークアウトすると思います。しかし、私の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>' 

まだ私のRSpecのテストのために製作を実施しながら、どのように私はrails consoleを読み込むことができますか?

答えて

0

製造時に定義された製造元が自動的に読み込まれます。また、同じファブリケーターを誤って2回定義していないことを確認して、コードベースで問題が混乱する可能性があるかどうかをチェックします。これは、アプリケーション内の何かがファブリケーターを2回ロードしているため、これを見ている可能性があります。

実際に何かを製作しようとしないなら、製作者には全く装填を試みません。コンソールを実行した直後にこのコードが表示されている場合は、コードベースに2つのインスタンスがあり、そのうちの1つが独自のプロセスの外部にロードされています。

私は製造上の問題についても回答しました:https://github.com/paulelliott/fabrication/issues/302#issuecomment-330935726

関連する問題