2010-12-26 2 views
10

유지 관리를 쉽게하기 위해 seeds.rb 파일을 여러 섹션으로 나누고 싶습니다. a.rb에 모든 A를 시드하고 b.rb에 B를 넣습니다. 개별 파일은 seeds.rb가있는 db/디렉토리에 있습니다. 각 파일은 "A.create"또는 "B.create"호출로 구성되어 있으며 seeds.rb에서 파일을 호출하려고합니다.seeds.rb를 여러 섹션으로 나누십시오.

이 나는 ​​시도했다 :

include 'a' 
include 'b' 

내 seeds.rb에서

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

하지만 그들은 내가 전화 할 때 처리하지 않는 것 "레이크 dB : 씨". 이것은 아마도 레일스 질문보다 더 많은 루비 질문 일 것입니다. 그러나 완성을 위해 저는 Mac에서 Ruby 1.9.2와 Rails 3를 사용하고 있습니다.

답변

20

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

'db/migrate '에 넣는 것이 좋은 아이디어인지 잘 모르겠습니다. 이주와 씨앗은 다르며 그렇게 취급해야합니다. 대신에'db/seed' 디렉토리가 더 좋을 것입니다. – vonconrad

+3

예,'db/migrate'에 넣지 마십시오. db/seed와 같은 별도의 폴더에 있습니다. –

+0

물론 매력처럼 작동했습니다. 감사! (그리고 나는 그것들을 별도의 "씨앗"디렉토리에 넣었다) – GSP

1

나는 당신이 당신의 다양한 씨앗 파일을 배치 할 수있는 새로운 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 } 

그래서, 당신도 당신이 선호하는 순서대로 씨앗을로드 할 수 있습니다.


이 솔루션

는 원래이 "duplicated" question에 nathanvda에 의해 제안되었다.