Как с помощью генераторов rails3 можно заменить светильники на фабрики?

Я пытаюсь заменить генерацию приспособлений фабриками с помощью генераторов rails3:

https://github.com/indirect/rails3-generators#readme

Драгоценный камень включен в мой Gemfile и установлен:

# Gemfile
gem 'rails3-generators', :group => :development

Я добавил в application.rb следующее:

# application.rb
config.generators do |g|
  g.stylesheets false
  g.fixture_replacement :factory_girl
end

Тем не менее, «rails g model Insect» по-прежнему генерирует фикстуры («insects.yml»). Это работает для других, использующих Rails 3.0.4 и rails3-generators 0.17.4?

«rails g» показывает новые доступные генераторы (такие как Authlogic и Koala), но «rails g model» по-прежнему перечисляет фикстуры и не относится к фабрикам.

Что еще я должен добавить, чтобы заставить это работать? Спасибо.

Редактировать: я запустил тестовый набор драгоценного камня, который включает тест для этого, и он проходит. Не знаю, почему это не работает с моим приложением.

Edit2: я попробовал еще раз с тестовым проектом и получил тот же результат: приборы вместо фабрик. Если бы кто-нибудь мог подтвердить, работает ли это для них с Rails 3.0.4 и rails3-generators 0.17.4, это тоже было бы полезно, потому что это означало бы, что я делаю что-то не так со своими проектами.

Edit3: это работает, если я запускаю «rails g model Insect -r factory_girl». Я думал, что конфигурация генератора в application.rb должна была позаботиться об этом, так что это, кажется, источник проблемы.


person TK-421    schedule 23.02.2011    source источник


Ответы (2)


Поискав вокруг, я нашел следующее, что может помочь:

  1. Попробуйте указать параметр каталога для фабрик factory_girl:

    config.generators do |g|
      g.stylesheets false
      g.fixture_replacement :factory_girl, :dir => "spec/factories" # or test/factories, as the case may be
    end
    
  2. Если вы используете Test::Unit, попробуйте следующее:

    config.generators do |g|
      g.stylesheets false
      g.test_framework  :test_unit, :fixture_replacement => :factory_girl
    end
    

В обоих случаях вам по-прежнему понадобится гем rails3-generators, хотя есть толчок, чтобы добавить эту функциональность в factory_girl_rails.

Эта ошибка Rails указывает на то, что в какой-то момент код g.fixture_replacement может не правильно работал. Возможно, тест в 3.0.5 в порядке. :)

person Michelle Tilley    schedule 24.02.2011
comment
Ууууу! Спасибо, Брэндон, теперь работает (обсессивно-компульсивное расстройство успокаивает). Я сделал кучу поиска, прежде чем опубликовать, но забыл поискать список ошибок. Я использую Test::Unit (или MiniTest, я думаю, учитывая 1.9.2), и # 2 сделал свое дело. 3.0.5 еще не пробовал... - person TK-421; 25.02.2011

Небольшое обновление спустя 9 лет:

вместо factory_girl_rails (который сейчас устарел) используйте factory_bot_rails.

Теперь фабрика создается автоматически:

$ rails g имя тестера модели: строка

Запуск через предварительный загрузчик Spring в процессе 31467

 invoke  active_record

 create    db/migrate/20200327152901_create_testers.rb

 create    app/models/tester.rb

 invoke    rspec

 create      spec/models/tester_spec.rb

 invoke      factory_bot

 create        spec/factories/testers.rb

Я использую рельсы 5.2.4, но это также должно работать с рельсами 6.

person randmin    schedule 27.03.2020