Ruby On Rails: способ создания разных файлов семян для сред - программирование
Подтвердить что ты не робот

Ruby On Rails: способ создания разных файлов семян для сред

Как сделать задачу rake db:seed использовать другой файл seeds.rb для производства и разработки?

изменить: любая лучшая стратегия будет приветствоваться

4b9b3361

Ответ 1

У вас может быть задача rake вести себя по-разному на основе текущей среды, и вы можете изменить среду, в которой выполняется задача, передав команду RAILS_ENV=production команде. Используя эти два вместе, вы можете создать что-то вроде этого:

Создайте следующие файлы с конкретными семенами среды:

db/seeds/development.rb
db/seeds/test.rb
db/seeds/production.rb

Поместите эту строку в файл базы семян для запуска нужного файла

load(Rails.root.join( 'db', 'seeds', "#{Rails.env.downcase}.rb"))

Вызвать задачу семян:

rake db:seed RAILS_ENV=production 

Ответ 2

Мне нравится внедрять все семена внутри одного файла seed.rb, а затем просто разделять среды внутри.

if Rails.env.production? 
  State.create(state: "California", state_abbr: "CA")
  State.create(state: "North Dakota", state_abbr: "ND")
end

if Rails.env.development?
  for 1..25
    Orders.create(order_num: Faker::Number:number(8), order_date: Faker::Business.credit_card_expiry_date)
  end
end

Таким образом вам не нужно бросать свойство RAILS_ENV в свою задачу рейка или управлять несколькими файлами. Вы также можете включить Rails.env.test?, но я лично позволю RSPEC позаботиться о данных тестирования.