将seeds.rb拆分成多个部分?

我想将seeds.rb文件分成多个部分以便于维护; a.rb中的所有A,b.rb中的B等等。单独的文件位于带有seeds.rb的db /目录中。 每个文件都包含一堆“A.create”或“B.create”调用,我想从seeds.rb调用这些文件。

我试过了:

include 'a' include 'b' 

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

在我的seeds.rb中,但是当我调用“rake db:seed”时它们似乎没有被处理。 这可能更像是一个直接的ruby问题而不是rails问题,但为了完整性我在Mac上使用Ruby 1.9.2和Rails 3。

./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 

我建议创建一个新的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 } 

因此,您可以按照自己喜欢的顺序加载种子 – 这通常是需要的。


这个解决方案最初由nathanvda在这个“重复”的问题中提出 。