2013-06-15 4 views
5

मैं सोच रहा था कि कोई व्यक्ति सिनात्रा ऐप के भीतर मॉड्यूलर के लिए स्पष्टीकरण को सरल बना सकता है या नहीं। मैं देखता हूं कि क्लासिक सेटअप और सिनात्रा के भीतर एक मॉड्यूलर सेटअप है, लेकिन दस्तावेज़ों को पढ़ने से मैं समझ नहीं पा रहा हूं कि मॉड्यूलर क्या कर रहा है।सिनात्रा में मॉड्यूलर का क्या अर्थ है?

यदि संभव हो तो मुझे वास्तव में इसके मूल स्तर पर स्पष्टीकरण पसंद आएगा और इसे profile.rb में डालने से ऐप का सेटअप बदल जाएगा (यदि ऐसा है)। कृपया ध्यान रखें कि मैं एक नौसिखिया हूं, इसलिए सरल और पूरी तरह से स्पष्टीकरण सर्वोत्तम हैं!

require 'rubygems' 
require 'sinatra' 

class Profile < Sinatra::Base 

get '/' do 
erb :index 
end 


end 

उत्तर

3

इसका मतलब है कि आप एक आप अपने प्रश्न में दिए गए, एक ही सुपर अनुप्रयोग के भीतर स्वतंत्र मॉड्यूल के रूप की तरह एक या अधिक सिनात्रा क्षुधा बना सकते हैं, उदाहरण के लिए बंधे एक साथ Rack#map का उपयोग कर:

# config.ru 

require 'app1' 
require 'app2' 

run Rack::Builder.new { 
    map "/app1" do 
    run App1.new 
    end 

    map "/app2" do 
    run App2.new 
    end 
} 
+0

इसलिए जब तक कि आप सुपर ऐप के भीतर दो ऐप्स नहीं चलाना चाहते हैं, तो क्लासिक सेटअप की तुलना में इसका उपयोग करने के लिए कोई और लाभ है? – Richlewis

+0

कोई लाभ नहीं। एक तरफ, यदि आप सिनात्रा ऐप्स के दो उत्कृष्ट उदाहरण चाहते हैं, तो [गीथब सर्विसेज] (https://github.com/github/github-services) देखें (अगर स्मृति सेवा करता है तो सिनात्रा अर्थ में गैर-मॉड्यूलर, लेकिन निश्चित रूप से अभ्यास में मॉड्यूलर) और [पैड्रिनो] (http://www.padrinorb.com) (सभी स्तरों पर मॉड्यूलर)। –

2

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

उसी ऐप के विभिन्न उदाहरणों के लिए घटकों का उपयोग करने के एक अच्छे उदाहरण के लिए इस stackoverflow question पर एक नज़र डालें।

आपके उदाहरण में, यह ऐप बनाने में आपका लक्ष्य क्या है इस पर निर्भर करता है। सिनात्रा :: बेस का उपयोग करते समय अधिकांश विकल्प डिफ़ॉल्ट रूप से अक्षम होते हैं, आपको configure the options का उपयोग करना होगा। इसके अलावा, आपके उदाहरण में आपको 'sinatra' की आवश्यकता के बजाय 'sinatra/base' की आवश्यकता होती है। अनिवार्य रूप से सिनात्रा :: बेस एक "खाली स्लेट" है और अधिकांश विकल्प डिफ़ॉल्ट रूप से अक्षम होते हैं।

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