2017-09-20 11 views
0

Fabrication gem은 내가 공장 모델 인 것을 불평하기 때문에 레일 콘솔을 실행할 수 없게 만듭니다 그것으로 만드는 것은 이미 내 app/models에 정의되어 있습니다. 내가 테스트하는 동안이 모델의 샘플을 만드는거야제작 보석으로 인해 오류가있는 'rails console`을 실행할 수 없습니다. rspec 공장을 구현할 때'model_name '이 이미 정의되어 있습니다.

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 

는 예를 들어, 나는처럼 보이는 내 app/modelsIssue 모델이 어쨌든 레일스는 괴물의 콘솔이라는 두 가지 정의가 있기 때문에 콘솔 괴물이 빠져 나간다고 생각합니다. 그러나, 내 rspec 테스트 및 응용 프로그램을 모두 잘 실행됩니다.

내가 특별히지고있어 오류 : 여전히 내 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를로드 할 수 있습니까?

답변

0

Fabrication은 사용자가 무언가를 조작하려고 할 때 정의 된 fabricator를 자동으로로드합니다. 또한 실수로 동일한 fabricator를 두 번 정의하지 않아 코드베이스에서 혼란스러운 문제를 일으킬 수 있는지 확인합니다. 응용 프로그램의 일부에서 fabricator를 두 번로드하기 때문에이 문제가 발생했을 가능성이 큽니다.

실제로 주목해야 할 점은 제작을 실제로 시도하지 않는다면 제작자를 전혀로드하지 않을 것이라는 점입니다. 콘솔을 실행할 때 바로 이것을보고 있다면, 코드베이스에 2 개의 인스턴스가 있으며, fabricator가 자신의 프로세스 외부에서로드되고있는 것 같습니다.

또한 제작 자체에 대한 이슈에 대한 답변 : https://github.com/paulelliott/fabrication/issues/302#issuecomment-330935726