Разделить семена.рб на несколько разделов? - PullRequest
10 голосов
/ 26 декабря 2010

Я бы хотел разбить мой файл seed.rb на несколько разделов для удобства обслуживания; seed все A в a.rb, B в b.rb и т. д. Отдельные файлы находятся в каталоге db / вместе с seed.rb. Каждый файл состоит из набора вызовов «A.create» или «B.create», и я хочу вызывать эти файлы из seed.rb.

Я пробовал:

include 'a'
include 'b'

и

load 'a.rb'
load 'b.rb' 

в моем seed.rb, но, кажется, они не обрабатываются, когда я называю "rake db: seed". Вероятно, это скорее прямой вопрос по рубину, чем вопрос по rails, но для полноты я использую Ruby 1.9.2 и Rails 3 на Mac.

Ответы [ 2 ]

20 голосов
/ 26 декабря 2010

В ./db/seeds/my_module.rb:

module MyModule
  puts "In my_module.rb"
  # add code here
end

В ./db/seeds.rb:

require File.expand_path('../seeds/my_module', __FILE__) # the ../ just removes `seeds.rb` filename from the path which is given by __FILE__

p "In seeds.rb"
# add code here
2 голосов
/ 09 февраля 2017

Я бы предложил создать новую директорию db/seeds/, в которую вы можете поместить файл различных семян:

db/seeds/01_stuff_that_comes_for_first.rb
db/seeds/02_stuff_that_comes_for_second.rb
...

А затем отредактируйте файл db/seeds.rb с помощью:

Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each { |seed| load seed }

Таким образом, вы можете загружать семена даже в том порядке, который вы предпочитаете - это часто требуется.


Это решение было первоначально предложено Натанвдой в этом «дублированном» вопросе .

...