Добавление пользовательского начального файла
Я хочу заполнить новую функцию фиктивными данными, но не хочу использовать db/seeds.RB-файл, поскольку он уже имеет семена других данных, не имеющих отношения к этой функции.
для запуска по умолчанию seeds.rb
файл, вы запускаете команду rake db:seed
.
если я создам файл в
3 ответа:
начните с создания отдельного каталога для хранения пользовательских семян – в этом примере используется
db/seeds
. Затем создайте пользовательскую задачу, добавив rakefile в свой :# lib/tasks/custom_seed.rake namespace :db do namespace :seed do Dir[Rails.root.join('db', 'seeds', '*.rb')].each do |filename| task_name = File.basename(filename, '.rb') desc "Seed " + task_name + ", based on the file with the same name in `db/seeds/*.rb`" task task_name.to_sym => :environment do load(filename) if File.exist?(filename) end end end end
этот rakefile принимает имя исходного файла в
я попробовал ответ zeantsoi, но он не дал мне то, что я хотел, он сделал все файлы в каталоге. Взломал его и получил это.
namespace :db do namespace :seed do task :single => :environment do filename = Dir[File.join(Rails.root, 'db', 'seeds', "#{ENV['SEED']}.seeds.rb")][0] puts "Seeding #{filename}..." load(filename) if File.exist?(filename) end end end
и чтобы использовать это сделать следующее:
rake db:seed:single SEED=<seed_name_without_.seeds.rb>
это будет выглядеть в рельсах.папка root/db/seeds для имени файла без имени .семена.РБ (он добавляет их для вас).
пример:
rake db:seed:single SEED=my_custom_seed
выше будет сеять
Rails.root/db/seeds/my_custom_seed.seeds.rb
file
слишком сложно! Я просто хотел, чтобы простая задача выполняла каждый файл в каталоге db/seeds без передачи каких-либо имен файлов.
# lib/tasks/seed.rake desc "Run all files in db/seeds directory" namespace :db do task seed: :environment do Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].each do |filename| puts "seeding - #{filename}. for reals, yo!" load(filename) end end end