2010-09-23 21 views
5

मैंने कुछ ऐप्स देखे हैं जिनमें डेटा लोड करने के लिए कुछ रेक कार्य शामिल हैं। मैं बीज डेटा के बारे में बात नहीं कर रहा हूं, मुझे डीबी/बीडी.आरबी के बारे में पता है, इसके बजाय मैं डिफ़ॉल्ट उपयोगकर्ताओं और बुनियादी रिकॉर्ड जैसे डेटा का जिक्र कर रहा हूं जो मुझे अपना आवेदन देखने के लिए कुछ मदद करने में मदद करता है। जुड़नार:: मैं db का उपयोग नहीं करना चाहते हैं, क्योंकि मैं इस पर कोई नियंत्रण नहीं है लोड ...डिफ़ॉल्ट डेटा जोड़ने के लिए रेक कार्य

मैं इस तरह रेक कार्य करना चाहते हैं:

rake myapp:data:delete 
rake myapp:data:load 
rake myapp:data:reload 

कहाँ 'को हटाना 'रेक कार्य रेक डेटा में निर्दिष्ट सभी डेटा को हटा देगा,' लोड 'ऐप कार्य से डिफ़ॉल्ट डेटा को ऐप में लोड करेगा और' रीलोड 'कार्य सभी डेटा हटा देगा, फिर इसे ऐप में लोड करेगा। मैं ऐसा कुछ कैसे करूं?

यदि आप मुझे एक उदाहरण दे सकते हैं जहां मेरे पास 'संपर्क' नामक मॉडल है और कुछ फ़ील्ड - मूल रूप से उन क्षेत्रों से डेटा को जोड़ने या हटाने के लिए, मैं वास्तव में इसकी सराहना करता हूं!

बस आपको एक विचार देने के लिए, जब मैं एक कंप्यूटर से दूसरे कंप्यूटर में विकास करने के लिए जाता हूं तो मैं मुख्य रूप से इन रेक कार्यों का उपयोग करता हूं। मैं मैन्युअल रूप से डिफ़ॉल्ट रिकॉर्ड्स दर्ज नहीं करना चाहता (जैसे कि मेरे उपयोगकर्ता के साथ लॉगिन करने के लिए) ताकि मैं केवल रेक मैप कर सकूं: डेटा: रीलोड - यह रेक डीबी करने के बाद होगा: स्कीमा: लोड

धन्यवाद,

बी एन

उत्तर

7

एक फ़ाइल lib/कार्य/data.rake बनाएँ और निम्न कोड लिखें:

require File.join(File.dirname(__FILE__), '../../config/environment') 
require 'database_cleaner' 

namespace :myapp do 
    namespace :data do 

    task :delete do 
     DatabaseCleaner.strategy = :truncation 
     DatabaseCleaner.clean 
    end 

    task :load do 
     require 'db/data.rb' 
    end 

    task :reload do 
     Rake::Task['myapp:data:delete'].invoke 
     Rake::Task['myapp:data:load'].invoke 
    end 

    end 
end 

तो अब आप अपने रेक कार्यों को परिभाषित किया है। मैं मणि database_cleaner उपयोग कर रहा हूँ, ताकि आप इसे स्थापित करने के लिए की आवश्यकता होगी:

sudo gem install database_cleaner 

अब, rake myapp:data:load मूल रूप से db/data.rb नामक एक फ़ाइल से डेटा लोड हो रहा है। जब तक आप रेक कार्य में फ़ाइल नाम का उपयोग करते थे, तब तक आप इसे तब तक नामित कर सकते थे जब आप चाहें तो एक से अधिक फाइलों का उपयोग कर सकते हैं ... तो फ़ाइल db/data.rb बनाएं और आपको आवश्यक सभी कोड डालें ...

User.create(...) 
+0

तत्काल उत्तर के लिए धन्यवाद! मैंने ठीक वही किया जैसा आपने कहा था, लेकिन किसी कारण से यह डीबी/data.rb फ़ाइल नहीं ढूंढ रहा है। यहां मुझे मिली त्रुटि है: – dingalingchickenwiing

+0

रेक निरस्त! लोड करने के लिए ऐसी कोई फ़ाइल नहीं - डीबी/data.rb (--trace के साथ कार्य चलकर पूर्ण ट्रेस देखें) bash $ – dingalingchickenwiing

+0

मैंने सब कुछ करने की कोशिश की है ... यह नहीं मिलेगा ../db/data.rb , ../../db/data.rb या डीबी/data.rb - मुझे कोई भाग्य नहीं है। कृपया मदद करे। :( – dingalingchickenwiing

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