21

क्या बहु-फ़ाइल रूबी प्रोग्राम आयोजित करने के लिए मानक या पारंपरिक प्रणाली है? मैंने रुबी में अपनी पहली बड़ी "परियोजना" शुरू की है, एक खोज प्रोग्राम जो कई फाइलों और निर्देशिकाओं में तर्कसंगत रूप से व्यवस्थित है। मैं अपने संभावित संरचना नीचे प्रदान की हैं:बहु-फ़ाइल रूबी प्रोग्राम आयोजित करने के लिए सिस्टम?

  • मुख्य फ़ाइल। यह फ़ाइल खोज वर्ग और सामान्य खोज प्रोटोकॉल लागू करती है।
  • एल्गोरिदमिक विश्लेषण फ़ाइल। यह फ़ाइल उन कार्यों को लागू करती है जो खोज परिणामों की व्याख्या करती हैं।
  • प्रोटोकॉल निर्देशिका
    • प्रोटोकॉल खोज करने के लिए प्रति एक फ़ाइल है।
  • निर्देशिका फ़ीड कार्यक्रम का उद्देश्य के
    • भाग संग्रहीत समाचार फ़ीड खोज करने के लिए है। इस सुविधा के लिए फाइलें इस फ़ोल्डर में जाती हैं।

हालांकि, कोड वर्तमान में एक वर्ग है कि प्रत्येक प्रोटोकॉल के खोज वर्ग (GoogleSearcher < खोजकर्ता) से विरासत (इसे खोजकर्ता कॉल)। इसे प्रबंधित करने के लिए, मुझे इन प्रोटोकॉल फ़ाइलों (दाएं?) में मुख्य फ़ाइल शामिल करने की आवश्यकता है जो मेरी आदर्श संरचना को संभव नहीं लगती है।

मेरे विशिष्ट उदाहरण के अलावा, मैं सोच रहा था कि क्या कोई सम्मेलन है, जैसे कि "कम से कम फाइलें" या "फाइलों की लॉजिकल स्ट्रक्चरिंग अनावश्यक है"। क्या "सहायक" कार्यों की एक फ़ाइल है (जैसे कि रेल में?) किस स्तर का अमूर्त उचित माना जाता है?

अंत में, मैं पुस्तकालय के रूप में किसी दिन रेल में एकीकृत करने की योजना बना रहा हूं (प्लगइन नहीं; मैं इसे स्टैंडअलोन भी काम करना चाहता हूं)। मुझे नहीं पता कि यह संगठन को प्रभावित करेगा या नहीं।

मुझे पता है कि यह एक सुंदर ओपन-एंडेड प्रश्न है, लेकिन ऐसा इसलिए है क्योंकि मैं दूरस्थ रूप से प्रासंगिक किसी भी सलाह की सराहना करता हूं। अग्रिम में धन्यवाद।

उत्तर

11

आप अपनी लाइब्रेरी के लिए एक मणि बनाने पर विचार कर सकते हैं। इससे लाइब्रेरी का उपयोग स्टैंड-अलोन और रेल के साथ करना आसान होगा, साथ ही तैनाती/अपडेट को सरल बना दिया जाएगा।

आगे, क्योंकि रत्न सामान्य रूप से एक विशिष्ट निर्देशिका संरचना का पालन करते हैं, यह पुस्तकालय को व्यवस्थित करने के तरीके को जानने के आपके मुद्दे को हल करता है।

रत्न बनाने के लिए बहुत सारे दस्तावेज उपलब्ध हैं। Here फ़ाइल संरचना के साथ-साथ अन्य उपयोगी युक्तियों के बारे में थोड़ी अधिक जानकारी है।

+0

कुछ साफ मणि बनाने के उपकरण हैं: newgem, ज्वैलर, हड्डियों। मैंने एक प्रोजेक्ट के लिए न्यूजम का इस्तेमाल किया था (जिसे वास्तव में मणि के रूप में रिलीज़ नहीं किया गया था) और यह बहुत अच्छा काम करता है – RyanWilcox

+0

यह अच्छा है, और यह केवल एक अनुत्तरित प्रश्न छोड़ देता है (पीछे की ओर, यह सवाल निश्चित रूप से बहुत व्यापक था।) क्या वहां है कई फाइलों में कक्षा विरासत रखने का एक तरीका, जहां मुख्य वर्ग मुख्य फ़ाइल में है और उससे प्राप्त कक्षाएं उपनिर्देशिका में परिधीय फाइलों में हैं? या वह एक पिछड़ा संगठन है? –

+0

जब विरासत की बात आती है तो रूबी बहुत क्षमा कर रही है। यदि मैं आपके प्रश्न को सही ढंग से समझता हूं, तो आप इसे वर्णन करने के लिए निश्चित रूप से इसे सेट करना संभव होगा। आपकी परियोजना के किसी भी विवरण को जानने के बिना, मैं शायद वही काम करूंगा जहां "मुख्य वर्ग" lib/foo/निर्देशिका में है और मुख्य वर्ग से प्राप्त कक्षाएं lib/foo/bar, lib/foo/baz में हैं और इसी तरह। इस प्रकार के सेटअप के लाइव उदाहरणों के लिए नोकोगिरी जैसे रत्नों पर नज़र डालें। – vonconrad

0

यदि आप रेल के साथ एकीकृत करना चाहते हैं, तो आप शायद एक प्लगइन बनाना चाहते हैं।

इस गाइड एक अच्छी जगह शुरू करने के लिए हो सकता है: http://guides.rubyonrails.org/plugins.html

+0

दिलचस्प, लेकिन मुझे नहीं लगता कि मैं रेल एकीकरण की गहरी चाहता हूं। (विशेष रूप से क्योंकि मैं वास्तव में एक रेल विशेषज्ञ नहीं हूं)। मुझे लगता है कि मैं इसे इसके बजाय पुस्तकालय के रूप में उपयोग करूंगा। स्पष्टीकरण के लिए अनुरोध अद्यतन किया है। –

2

आप वोनकोनैड की सलाह के साथ Ideal ruby project structure पर एक नज़र डालना चाहेंगे। एक मणि निश्चित रूप से शुरू करने के लिए एक अच्छी जगह होगी और आधिकारिक rubygems documentation के माध्यम से चलाने के लिए भी फायदेमंद हो सकता है।

8

वोनकोनैड के उत्तर में अनुशंसित लिंक के अलावा, आप डेव थॉमस एट अल द्वारा Programing Ruby 1.9 के अध्याय 16 में "अपना स्रोत व्यवस्थित करना" अनुभाग देख सकते हैं। free sample PDF of that part of the book है।

अध्याय का उल्लेख है:

16,1 नेमस्पेस हम पहले से ही एक तरीका है कि रूबी आप अपने कार्यक्रमों में चीजों के नाम प्रबंधन में मदद करता सामना किया है। आप डी फाई ne तरीकों या एक कक्षा में स्थिरांक, रूबी सुनिश्चित करता है कि उनके नाम उस वर्ग

16,2 आयोजन आपका स्रोत छोटे के संदर्भ में केवल इस्तेमाल किया जा सकता है, तो आत्म निहित स्क्रिप्ट एक भी इंटरनेट में हो सकता है ले ... बड़ा कार्यक्रमों RubyGems प्रणाली पर विचार करना चाहिए

anagram/ <- top-level 
    bin/ <- command-line interface goes here 
    lib/ <- three library files go here 
    test/ <- test files go here 
0

मैं जानता हूँ कि इस सवाल का काफी पुराना है, लेकिन उम्मीद है कि जो लोग बाद आने के लिए उपयोग की हो जाएगा ...

क्या ऊपर कहा गया है साथ मैं मानता हूँ: जवाहरात को संगठित करने और कोड का पुन: उपयोग करने के लिए एक शानदार तरीका है। ऊपर दिए गए लिंक के अलावा, मैं जवाहरात बनाने के लिए Bundler का उपयोग करना चाहिये सकता है के रूप में इस रयान बेट्स RailsCast में उल्लिखित: http://railscasts.com/episodes/245-new-gem-with-bundler

मुझे लगता है उस बंडलर मणि निर्माण और रखरखाव बहुत स्पष्ट करता है।

विरासत के संबंध में, अलग-अलग वर्ग पदानुक्रमों में कोड को समाहित और पुन: उपयोग करने के लिए रूबी मिश्रक का उपयोग कैसे किया जा सकता है, इसकी जांच करें। http://ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html

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