में पिछला लेख, आपने सीखा कि रैक क्या है। अब, रैक का उपयोग शुरू करने और कुछ पृष्ठों की सेवा करने का समय आ गया है।
नमस्ते दुनिया
पहले, चलो एक साथ शुरू करते हैंनमस्ते दुनिया”आवेदन। यह आवेदन, चाहे वह किसी भी प्रकार का अनुरोध क्यों न हो, 200 की स्थिति कोड (जो "ओके" के लिए HTTP- बोलता है) और स्ट्रिंग के साथ वापस आ जाएगा "नमस्ते दुनिया" शरीर के रूप में।
निम्नलिखित कोड की जांच करने से पहले, उन आवश्यकताओं पर फिर से विचार करें जो किसी भी रैक अनुप्रयोग को पूरी करनी चाहिए।
एक रैक एप्लिकेशन कोई भी रूबी ऑब्जेक्ट है जो कॉल विधि के लिए प्रतिक्रिया करता है, एक एकल हैश पैरामीटर लेता है और एक सरणी देता है जिसमें प्रतिक्रिया स्थिति कोड, HTTP प्रतिक्रिया हेडर और एक प्रतिक्रिया बॉडी होती है तार।
कक्षा हैलोवर्ल्ड
डीईएल कॉल (एनवी)
वापसी [200, {}, ["नमस्ते दुनिया!"]
समाप्त
समाप्त
जैसा कि आप देख सकते हैं, प्रकार का एक ऑब्जेक्ट नमस्ते दुनिया इन सभी आवश्यकताओं को पूरा करेगा। यह बहुत कम से कम और बहुत उपयोगी तरीके से नहीं करता है, लेकिन यह सभी आवश्यकताओं को पूरा करता है।
WEBrick
यह बहुत आसान है, अब इसे WEBrick (HTTP सर्वर) में प्लग करें
माणिक). ऐसा करने के लिए, हम इसका उपयोग करते हैं रैक:: हैंडलर:: WEBrick.run विधि, इसे का एक उदाहरण दें नमस्ते दुनिया और बंदरगाह पर चलने के लिए। एक WEBrick सर्वर अब चल रहा होगा, और Rack HTTP सर्वर और आपके एप्लिकेशन के बीच अनुरोधों को पारित करेगा।ध्यान दें, यह रैक के साथ चीजों को लॉन्च करने का एक आदर्श तरीका नहीं है। यह केवल यहां दिखाया गया है कि "रैकअप" नामक रैक की एक अन्य विशेषता में गोता लगाने से पहले कुछ चल रहा है, जो नीचे दिखाया गया है। रैक का उपयोग:: इस तरह से हैंडलर में कुछ समस्याएं हैं। सबसे पहले, यह बहुत विन्यास योग्य नहीं है। सब कुछ स्क्रिप्ट में कठिन है। यदि आप निम्नलिखित स्क्रिप्ट चलाते हैं, तो दूसरा, आप इस कार्यक्रम को नहीं मार सकते। यह Ctrl-C पर प्रतिक्रिया नहीं देगा। यदि आप यह कमांड चलाते हैं, तो बस टर्मिनल विंडो बंद करें और एक नया खोलें।
#! / usr / bin / env माणिक
'रैक' की आवश्यकता
कक्षा हैलोवर्ल्ड
डीईएल कॉल (एनवी)
वापसी [200, {}, ["नमस्ते दुनिया!"]
समाप्त
समाप्त
रैक:: हैंडलर:: WEBrick.run (
HelloWorld.new,
: पोर्ट => 9000
)
रैक
हालांकि यह करना काफी आसान है, यह सामान्य रूप से रैक का उपयोग कैसे किया जाता है, यह नहीं है। रैक का उपयोग आम तौर पर नामक उपकरण के साथ किया जाता है रैक. रैकअप ऊपर के कोड के निचले भाग में कम या ज्यादा होता है, लेकिन अधिक उपयोगी तरीके से। रैकअप को कमांड-लाइन से चलाया जाता है, और उसे दिया जाता है .ru "रैक फाइल।" यह सिर्फ एक रूबी लिपि है, जो अन्य बातों के अलावा, रैकअप को एक आवेदन खिलाती है।
उपरोक्त के लिए एक बहुत ही बेसिक Rackup फ़ाइल कुछ इस तरह दिखाई देगी।
कक्षा हैलोवर्ल्ड
डीईएल कॉल (एनवी)
वापसी [
200,
{"सामग्री-प्रकार '=>' पाठ / html '},
["नमस्ते दुनिया!"]
]
समाप्त
समाप्त
HelloWorld.new चलाएं
सबसे पहले, हमें एक छोटा सा बदलाव करना था नमस्ते दुनिया कक्षा। रैकअप एक मिडलवेयर ऐप चला रहा है जिसका नाम है रैक:: लिंट कि विवेक-जाँच प्रतिक्रियाएँ। सभी HTTP प्रतिक्रियाओं में एक होना चाहिए सामग्री प्रकार हेडर, ताकि जोड़ा गया। फिर, अंतिम पंक्ति सिर्फ ऐप का एक उदाहरण बनाती है और इसे पास करती है Daud तरीका। आदर्श रूप से, आपके आवेदन को पूरी तरह से रैकअप फ़ाइल के भीतर नहीं लिखा जाना चाहिए, इस फ़ाइल को इसमें आपके आवेदन की आवश्यकता होनी चाहिए और इस तरह से इसका एक उदाहरण बनाना चाहिए। रैकअप फ़ाइल सिर्फ "गोंद" है, कोई वास्तविक आवेदन कोड नहीं होना चाहिए।
यदि आप कमांड चलाते हैं रैकअप helloworld.ru, यह पोर्ट 9292 पर एक सर्वर शुरू करेगा। यह डिफ़ॉल्ट Rackup पोर्ट है।
रैकअप में कुछ और उपयोगी विशेषताएं हैं। सबसे पहले, पोर्ट जैसी चीजों को कमांड लाइन पर, या स्क्रिप्ट में एक विशेष लाइन में बदला जा सकता है। कमांड-लाइन पर, बस में पास करें -पी पोर्ट पैरामीटर। उदाहरण के लिए: रैकअप -प १३३37 helloworld.ru. स्क्रिप्ट से ही, अगर पहली लाइन के साथ शुरू होता है #\, तो यह कमांड लाइन की तरह ही पार्स हो गया। तो आप यहाँ भी विकल्पों को परिभाषित कर सकते हैं। यदि आप पोर्ट 1337 पर चलना चाहते हैं, तो रैकअप फ़ाइल की पहली पंक्ति पढ़ सकता है # \-पी 1337.