5

मैं एक जनरेटर है कि बनाई गई फ़ाइलों बनाना चाहते थे (और निर्देशिका, आदि ...) अनुप्रयोग में पहले से ही विद्यमान फ़ाइलों के आधार पर (उदाहरण के लिए, विचारों या नियंत्रकों के लिए)। हम विचारों इसरेल जनरेटर: पहले से ही विद्यमान रेल के आधार पर फ़ाइलें उत्पन्न फ़ाइलें

-app 
    -views 
     - layouts 
      - application.html.erb 
     - users 
      - index.html.erb 
      - show.html.erb 
      - etc ... 

की तरह सेट किया था और मैं उन पर आधारित फ़ाइलें मैं (बस माणिक के साथ)

directories = Dir.entries("#{Rails.root}/app/views") 
directories.each do |directory| 
    unless directory == "." or directory == ".." 
    files = Dir.entries("#{Rails.root}/app/views/#{directory}") 
    files.each do |file| 
     unless file == "." or file == ".." 
     text = File.read("#{Rails.root}/app/views/#{directory}/#{file}")  
     something #=> whatever else needs to go here to edit the file 
     something else #=> output_file.puts whatever 
     end 
    end 
    end 
end 

तो यह मूल रूप से है मुझे क्या करना चाहते हैं क्या कर सकते हैं बनाना चाहता था तो अगर जनरेटर के साथ, इसलिए मैं अपना कोड प्लगइन में डाल सकता हूं और अन्य ऐप्स के लिए इसका उपयोग कर सकता हूं।

पहला सवाल, मैं मनमाने ढंग से फ़ाइलें (कैसे उत्पन्न कर सकते हैं जनरेटर का उपयोग मौजूदा फ़ाइल नाम के आधार पर फ़ाइल नामों के साथ। की तरह मैं ऊपर था, निर्देशिका/फ़ाइल हड़पने और फ़ाइलें उत्पन्न यह निर्देशिका के माध्यम से चक्र करने के लिए उचित है? वहाँ है एक तरह से मैं यह सब/प्रारूप पढ़ने/लिखने कोड जनरेटर ही अंदर डाल और बस में एक स्ट्रिंग पास करना चाहिए (मेरा आसानी से भंगुर लगता है) क्या मैं एक सरल विधि का उपयोग किया करते हैं।

इसके अलावा, "initialize content"create_file का अनुभाग या मुझे इसे कहीं और रखना चाहिए। या क्या मुझे जेनरेटर का उपयोग नंगे फाइलें और पॉपुल बनाने के लिए करना चाहिए इसे एक init स्क्रिप्ट के साथ खा लिया?

क्या रेल जेनरेट की गई फ़ाइलों को पॉप्युलेट करने का तरीका है, या मुझे जनरेटर के अंदर अपने सभी स्वरूपण कोड को सिर्फ ढकना चाहिए। यदि हां, तो इस तक पहुंचने का उचित तरीका क्या है।

+0

आपका प्रश्न बहुत अचानक समाप्त हो जाती "यदि हां, तो क्या है"। क्या आपके पास जोड़ने के लिए और कुछ है? –

उत्तर

5

मुझे यकीन नहीं है कि क्या आप जानना चाहते हैं कि जेनरेटर रेल 3 में कैसे बनाए जाते हैं या नहीं। जो कोड आप दिखा रहे हैं वह बहुत जनरेटर जैसा नहीं है। जनरेटर में आप Thor से सभी आदेशों का उपयोग कर सकते हैं, जो आपको फ़ाइलों को जोड़ना और कोड (स्ट्रिंग) को कक्षाओं या फ़ाइलों में इंजेक्शन देने का एक बहुत ही शक्तिशाली टूलसेट प्रदान करता है।

तो मैं सबसे निश्चित रूप से अपनी फ़ाइलें एक जनरेटर के अंदर, को भरना था क्योंकि तब यह उपयोगकर्ता के अनुरोध पर होता है, और उपयोगकर्ता का चयन कर सकते हैं या नहीं, कुछ फ़ाइलों की जरूरत है या या ओवरराइट किया जा सकता नहीं।

अपने मणि के अंदर, आपके पास lib/generators फ़ोल्डर होगा, जिसमें templates फ़ोल्डर होगा, जिसमें वे सभी फाइलें होंगी जिन्हें आप रेल अनुप्रयोग के अंदर रखना चाहते हैं।

थोर प्रलेखन से, यहाँ एक जनरेटर में फ़ाइलों के निर्माण के लिए a nice example है।

उम्मीद है कि इससे मदद मिलती है।

1

रेल में जेनरेटर का उपयोग करने के लिए एक सरल एपीआई है। यहाँ आप एक अच्छा मार्गदर्शक पा सकते हैं:

http://guides.rubyonrails.org/generators.html

आप कुछ कोड की जांच करना चाहते हैं:

https://github.com/coderloop/tamed_beast

https://github.com/pilu/web-app-theme (एक और स्वच्छ उदाहरण) (मैं अपने जनरेटर के लेखक हूँ)

+0

किसी ने मेरा जवाब कम कर दिया है। इसके साथ गलत क्या है? –

+2

यह वह नहीं था जिसने आपका जवाब कम किया था, हालांकि मैं सुझाव दूंगा कि यह कम वोट दिया गया था क्योंकि यह अन्य साइटों के 3 लिंक हैं जिनकी वास्तविक सामग्री नहीं है। बाहरी लिंक की कभी-कभी क्षणिक प्रकृति के साथ यह उत्तर केवल मृत लिंक के सेट के रूप में समाप्त हो सकता है। –

+0

@ स्टेव: आपके स्पष्टीकरण के लिए धन्यवाद। पेस्ट लिंक पेस्ट करने की मेरी आदत नहीं है। इस मामले में, इस बात पर विचार करते हुए कि समाधान एक पूर्ण उत्तर में फिट होने के लिए इतना आसान * आसान नहीं है, मैंने कुछ वास्तविक (और सरल) उदाहरणों के साथ एक पूर्ण मार्गदर्शिका चिपकाई है ताकि यह दिखाया जा सके कि रेल जनरेटर के साथ कैसे काम करना है। मैं tamed_beast के जनरेटर के लेखक हूं, इसलिए यदि आवश्यक हो तो मैं और सहायता प्रदान कर सकता हूं। –

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