2010-12-26 14 views
10

मैं रखरखाव की आसानी के लिए अपने बीज.आरबी फ़ाइल को कई वर्गों में विभाजित करना चाहता हूं; सभी ए के बीज एआरबी में बी, बी बी में बीआरबी आदि। अलग फाइलें बीबी/निर्देशिका में बीबी/निर्देशिका में स्थित हैं। प्रत्येक फ़ाइल में "एक्रेट" या "बीक्रेट" कॉल का एक गुच्छा होता है और मैं उन फ़ाइलों को seed.rb से कॉल करना चाहता हूं।कई वर्गों में seed.rb विभाजित करें?

मैं कोशिश की है:

include 'a' 
include 'b' 

और

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

मेरी seeds.rb में, लेकिन वे जब मैं फोन संसाधित करने के लिए नहीं है "रेक db: बीज"। रेलवे प्रश्न की तुलना में यह शायद सीधे रूबी सवाल का अधिक है लेकिन पूर्णता के लिए मैं मैक पर रुबी 1.9.2 और रेल 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

मुझे यकीन नहीं है कि उन्हें 'डीबी/माइग्रेट' में डालने का एक अच्छा विचार है; माइग्रेशन और बीज अलग हैं और इन्हें इस तरह माना जाना चाहिए। इसके बजाय, एक 'डीबी/बीज' निर्देशिका शायद बेहतर होगी। – vonconrad

+3

हां, कृपया इन्हें 'डीबी/माइग्रेट' में न डालें, वे एक अलग फ़ोल्डर जैसे 'डीबी/बीज' में हैं। –

+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 द्वारा प्रस्तावित किया गया था।

संबंधित मुद्दे