2010-10-21 13 views
60

मैंने कुछ सिनात्रा और रेल के नमूने के माध्यम से काम किया है, लेकिन मुझे यह समझने में मुश्किल हो रही है कि कौन सी विशेषताएं तकनीक से संबंधित हैं।सिनात्रा बनाम रेल

सिनात्रा/रेल का उपयोग करके मुझे विशेष रूप से क्या लाभ होता है? क्या यह सिर्फ एक्शनपैक/एक्शन व्यू है? अगर मैं गलत हूं तो मुझे सही करें, लेकिन मैं केवल वेब्रिक/मंगल का उपयोग कर सकता हूं और मेरी .erb फ़ाइलों को सही तरीके से पूरा कर सकता हूं? और मैं उन फ़ाइलों में ActiveRecord तकनीक का उपयोग कर सकता हूं और अभी भी पोस्ट चर, सत्र स्थिति और क्वेरीस्ट्रिंग चर का उपयोग कर सकता हूं?

तो, मैं आपसे क्या पूछ रहा हूं, अगर मैं उपरोक्त PHP जैसी परिदृश्य से शुरू करता हूं; Webrick + ERB + ActiveRecord, सिनात्रा का उपयोग करके मुझे क्या लाभ होता है? और रेल का उपयोग करके मैं और क्या हासिल करूं?

उत्तर

60

सिनात्रा के लिए, यह वास्तव में रैक के चारों ओर एक रैपर की तरह है। तो आपको सबसे पहले पूछना होगा कि रैक का बिंदु क्या है। रैक मूल रूप से एक ढांचा है जिसके परिणामस्वरूप ढांचे को परिणाम देना चाहिए, यह किसी भी वेब सर्वर के साथ वापस लौटाया जा सकता है जो रैक का समर्थन करता है। तो यह वास्तव में एक संगतता परत है जो आपको इच्छानुसार अपने ढांचे/सर्वर संयोजन को चुनने की अनुमति देती है, इस बारे में चिंता किए बिना कि वे एक साथ काम करेंगे या नहीं। यदि आपका ढांचा रैक-अनुरूप है, तो आप रैक के माध्यम से व्यावहारिक रूप से किसी भी सर्वर पर तैनात करने में सक्षम होना चाहिए।

अब बात यह है कि रैक बहुत कम स्तर है। सिनात्रा जैसे फ्रेमवर्क आपको अच्छे रूटिंग, हेल्पर्स, फिल्टर के पहले/बाद में और बहुत कुछ जैसे चीजें देते हैं। आपको यह देखने के लिए दस्तावेज़ों को देखने की आवश्यकता है कि आप क्या प्राप्त कर सकते हैं। रेल बहुत अधिक विशेषतापूर्ण है, और कई मायनों में "जादुई" है। यही है, आप रेलों में एक पंक्ति लिख सकते हैं जो बहुत कुछ कर रही है, जो कुछ अच्छी चीज है, और कुछ के लिए भी जादुई है। मैं व्यक्तिगत रूप से रेल के आंतरिक की सभ्य समझ प्राप्त करने से पहले, इस कारण से सीनात्रा पसंद करता हूं।

+1

जानकारी के लिए धन्यवाद। यहां एक फॉलो अप प्रश्न है: यदि मेरे पास रेल या सिनात्रा नहीं है, तो मैं कुछ ईआरबी फाइलों को पूरा करने के लिए केवल वीब्रिक का उपयोग करने के बारे में कैसे जाउंगा? मुझे लगता है कि एक निश्चित बंदरगाह पर हथियार शुरू करने के लिए केवल रूबी कमांड का उपयोग करना संभव है और इसे किसी निश्चित निर्देशिका पर इंगित करना संभव है? – LoveMeSomeCode

+3

मैं सिर्फ "webrick" के लिए Googled, तीसरा परिणाम: http://microjet.ath.cx/webrickguide/html/ - और यह भी: http://segment7.net/projects/ruby/WEBrick/servlets.html – ehsanul

+1

I यह न देखें कि आप ईमानदारी से हालांकि सभी के साथ परेशान क्यों होना चाहते हैं, बहुत व्यर्थ लगता है, और वेब्रिक बिल्कुल सही सर्वर नहीं है। यदि आप वास्तव में चाहते हैं तो आप केवल ईआरबी के इंटरफेस के रूप में सिनात्रा के यूआरएल रूटिंग का उपयोग कर सकते हैं। आप अन्य सभी सुविधाओं को अनदेखा कर सकते हैं, या यदि आप चाहें तो बाद में उनका उपयोग कर सकते हैं। क्या आपने सिनात्रा के लिए हैलो वर्ल्ड देखा? सुपर सरल (और कोड की रेखाएं तब नहीं बदलेगी जब आप इसे केवल स्ट्रिंग के बजाय ईआरबी फ़ाइल का संदर्भ देना चाहते थे): http: // http: //www.sinatrarb.com/ – ehsanul

5

रेल द्वारा लाभ एक्शन व्यू/एक्शनपैक है। लेकिन आप बस Mongrel/Erb द्वारा प्रतिस्थापित कर सकते हैं। यह कुछ अलग है।

यह आपके सभी प्रकार के हेल्पर है जो आपके नाम में name_route या त्रुटि प्रबंधन जैसे हैं। यह सभी संसाधन प्रबंधन और इनहेरेटेड स्रोतों की तरह सभी प्लगइन है। रेल का लाभ

पैड्रिनो पर्यावरण जैसे कुछ टूल हैं जो आपको इस सहायक के लिए मदद करने के लिए हैं। लेकिन सभी प्लगइन सक्रिय होने के बाद यह वास्तव में तेज है? मुझे ऐसा नहीं लगता।

रेल 3 के साथ, रेल बहुत सारे रैक मिडलवेयर के साथ एक पूर्ण रैक एप्लिकेशन है। आप अपनी प्रतिक्रिया बढ़ाने के लिए बस कुछ मिडलवेयर छोड़ सकते हैं।