Ответ 1
Вам нужно помочь фиктивному приложению (или консоли rails), так как FactoryGirl будет выглядеть в Rails.root, который является spec/dummy.
Итак, из консоли, запущенной в spec/dummy, например, просто выполните следующее:
FactoryGirl.definition_file_paths = %w(../factories)
FactoryGirl.find_definitions
# You can use this line to see what factories are loaded
# FactoryGirl.factories
В вашем конкретном случае вам нужно будет изменить фактические местоположения, но где вы находитесь, если FactoryGirl не находит ваши заводы, потому что он не знает, где искать.
Чтобы быть конкретным: вот что я сделал. Мои потребности были следующими: мне нужно было запустить rspec из корневого каталога Gem. Но мне также нужно иметь возможность запускать консоль рельсов из встроенного фиктивного проекта и доступ к девушке Factory для создания удобного тестового объекта во время разработки.
TL;DR Добавьте этот код в свое фиктивное приложение application.rb
console do
FactoryGirl.definition_file_paths << Pathname.new("../factories")
FactoryGirl.definition_file_paths.uniq!
FactoryGirl.find_definitions
end
├── spec
│ ├── dummy
│ │ ├── app
│ │ ├── bin
│ │ ├── config
│ │ │ ├── environments
│ │ │ ├── initializers
│ │ │ ├── locales
│ │ │ ├── application.rb << This is the file to add the lines in.
Выпущенные биты моего макета приложения выглядят как
├── app
├── bin
├── config
├── lib
├── spec
│ ├── dummy
│ │ ├── app
│ │ ├── bin
│ │ ├── config
│ │ │ ├── environments
│ │ │ ├── initializers
│ │ │ ├── locales
│ │ │ ├── application.rb
│ │ │ ├── boot.rb
│ │ │ ├── database.yml
│ │ │ ├── environment.rb
│ │ │ └── routes.rb
...
│ ├── factories
│ │ └── models
│ │ └── api_requests.rb
│ ├── lib
│ │ ├── controllers
│ │ │ ├── controller_spec.rb
│ │ │ └── session__spec.rb
│ │ └── my_spec.rb
│ ├── support
│ └── vcr
│ ├── spec_helper.rb
├── Gemfile
├── Gemfile.lock
├── mygem.gemspec << this is the file to include the factory-girl-rails gem
Я включаю жемчужину factory -girl-rails только в моем gemspec и только в этом месте. Ничего в моем Gemfile и ничего в Gemfile для фиктивного приложения.
s.add_development_dependency 'rspec-rails'
s.add_development_dependency 'capybara'
s.add_development_dependency 'factory_girl_rails'
s.add_development_dependency 'shoulda'
s.add_development_dependency 'vcr'
s.add_development_dependency 'byebug'
s.add_development_dependency 'better_errors'
s.add_development_dependency 'binding_of_caller'