Перезагрузить factory_girl factory

Я хочу, чтобы при внесении изменений на фабриках я видел их в консоли rails без перезапуска всей консоли.

Я нашел несколько строк и проверил их с плохим пониманием того, что происходит, документация мне не понятно .:

FactoryGirl.reload

Я также проверил:

> FactoryGirl.factories.clear
> FactoryGirl.find_definitions # also tested FactoryGirl.factories.find_definitions
                               # but NoMethodError is raised
=> ActiveRecord::RecordNotFound: Couldn't find Address with ID=277 Torphy Squares
12 голосов | спросил juanpastas 6 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 06 Sep 2012 23:31:42 +0400 2012, 23:31:42

2 ответа


0

Я использовал Faker . Смотрите различия изменений, которые решили проблему:

# factories/building.rb, address is a string

- address    Faker::Address.street_address
+ address    { Faker::Address.street_address }

# factories/user.rb, email is a string

- email Faker::Internet.email
+ email { Faker::Internet.email }

А потом FactoryGirl.reload работает.

ответил juanpastas 11 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 11 Sep 2012 20:45:03 +0400 2012, 20:45:03
0

Вы также можете использовать reload! для перезагрузки консольной среды, но она не перезагружает фабрики. Используйте FactoryGirl.reload, чтобы перезагрузить определения Factory. Он (повторно) загружает эти определения из следующих мест (см. документацию ):

test/factories.rb
spec/factories.rb
test/factories/*.rb
spec/factories/*.rb

Другие упомянутые вами команды используются для очистки и загрузки определений. FactoryGirl.factories.clear очищает все загруженные определения Factory, а FactoryGirl.find_definitions перезагружает все определения из файла.

Обязательно используйте гем factory_girl_rails, если вы используете Rails. Например, когда вы определили factory :user, вы можете использовать его в своей консоли с FactoryGirl.build(:user) или FactoryGirl.create(:user). Это вернет экземпляр пользователя.

Если это не сработает, пожалуйста, опубликуйте более подробную информацию.

ответил hjblok 7 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 07 Sep 2012 00:20:25 +0400 2012, 00:20:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132