Вы можете позвонить Factory.define :price
только один раз, и я бы, вероятно, не поместил его в тот файл, в котором он находится сейчас. У вас есть папка фабрики? Обычно он живет на спец / фабриках. Там я бы создал файл price.rb и однажды определил вашу фабрику. factory_girl должен автоматически загрузить все эти определения для вас один раз.
Если вы используете Rails3 и у вас есть factory_girl_rails в вашем Gemfile, то вам даже не нужно это require 'factory_girl_rails'
, оно делает это за вас.
Также, если у вас новая версия огурца, программа установки должна автоматически добавить этот раздел в env.rb:
if defined?(ActiveRecord::Base)
begin
require 'database_cleaner'
DatabaseCleaner.strategy = :truncation
rescue LoadError => ignore_if_database_cleaner_not_present
end
end
DatabaseCleaner - это хороший способ усечения вместо использования вашего Price.delete_all
Последнее, что нужно - seed.rb - это хорошая концепция, которая очень похожа на то, что мы делаем в одном из наших приложений на работе.
Но имейте в виду, что все в каталоге features/support
автоматически запрашивается огурцом, поэтому вам не нужно иметь эту глупость Dir.glob.
С factory_girl мы не используем файл с семенами rails по умолчанию, потому что он не очень применим (по нашему мнению).
Я бы просто добавил файл с именем что-нибудь (наше имя db_setup.rb
), которое выглядит примерно так:
Before do
# Truncates the DB before each Scenario,
# make sure you've added database_cleaner to your Gemfile.
DatabaseCleaner.clean
Factory(:price, :attr1 => 'blah'...)
# More factories here etc
end