रूबी वेब एप्लीकेशन - सीजीआई प्रोग्रामिंग
रूबी एक सामान्य उद्देश्य वाली भाषा है; इसे ठीक से वेब भाषा नहीं कहा जा सकता है । फिर भी, सामान्य रूप से वेब एप्लिकेशन और वेब उपकरण रूबी के सबसे सामान्य उपयोगों में से हैं।
न केवल आप अपने खुद के एसएमटीपी सर्वर, एफ़टीपी डेमॉन या वेब सर्वर को रूबी में लिख सकते हैं, बल्कि आप रूबी का उपयोग अधिक सामान्य कार्यों जैसे कि CGI प्रोग्रामिंग या PHP के प्रतिस्थापन के रूप में भी कर सकते हैं।
कृपया CGI प्रोग्रामिंग पर अधिक विस्तार के लिए CGI प्रोग्रामिंग ट्यूटोरियल के साथ कुछ मिनट बिताएं ।
लेखन CGI लिपियों
सबसे बुनियादी रूबी CGI स्क्रिप्ट इस प्रकार है -
#!/usr/bin/ruby
puts "HTTP/1.0 200 OK"
puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"
यदि आप इस स्क्रिप्ट को test.cgi कहते हैं और इसे यूनिक्स-आधारित वेब होस्टिंग प्रदाता के पास सही अनुमतियों के साथ अपलोड किया है, तो आप इसे CGI स्क्रिप्ट के रूप में उपयोग कर सकते हैं।
उदाहरण के लिए, यदि आपके पास वेब साइट है https://www.example.com/लिनक्स वेब होस्टिंग प्रदाता के साथ होस्ट किया गया है और आप test.cgi को मुख्य निर्देशिका में अपलोड करते हैं और इसे अनुमति देते हैं, फिर जाकरhttps://www.example.com/test.cgi एक HTML पृष्ठ यह कहते हुए वापस करना चाहिए This is a test।
जब वेब ब्राउज़र से test.cgi का अनुरोध किया जाता है, तो वेब सर्वर वेब साइट पर test.cgi की तलाश करता है, और फिर रूबी दुभाषिया का उपयोग करके इसे निष्पादित करता है। रूबी स्क्रिप्ट एक मूल HTTP शीर्ष लेख देता है और फिर एक मूल HTML दस्तावेज़ देता है।
Cgi.rb का उपयोग करना
रूबी नामक एक विशेष पुस्तकालय के साथ आता है cgi पूर्ववर्ती CGI स्क्रिप्ट के साथ उन लोगों की तुलना में अधिक परिष्कृत इंटरैक्शन सक्षम करता है।
आइए एक मूल CGI स्क्रिप्ट बनाएं जो cgi का उपयोग करता है -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>This is a test</body></html>"
यहां, आपने एक CGI ऑब्जेक्ट बनाया और इसका उपयोग हेडर लाइन को आपके लिए प्रिंट करने के लिए किया।
फार्म प्रसंस्करण
वर्ग सीजीआई का उपयोग करना आपको दो तरीकों से HTML क्वेरी मापदंडों तक पहुंच प्रदान करता है। मान लीजिए कि हमें /cgi-bin/test.cgi?FirstName = ज़ारा और लास्टनाम = अली का URL दिया गया है।
आप पैरामीटर का उपयोग कर सकते हैं FirstName और LastName का उपयोग कर CGI # [] सीधे इस प्रकार है -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['FirstName'] # => ["Zara"]
cgi['LastName'] # => ["Ali"]
इन फ़ॉर्म चर तक पहुंचने का एक और तरीका है। यह कोड आपको सभी कुंजी और मूल्यों का हैश देगा -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}
h['FirstName'] # => ["Zara"]
h['LastName'] # => ["Ali"]
निम्नलिखित सभी कुंजियों को पुनः प्राप्त करने के लिए कोड है -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi.keys # => ["FirstName", "LastName"]
यदि किसी प्रपत्र में एक ही नाम के साथ कई फ़ील्ड होते हैं, तो संबंधित मान एक सरणी के रूप में स्क्रिप्ट पर वापस आ जाएंगे। [] एक्सर इनमे से पहला रिटर्न देता है। इन सबको पाने के लिए परमेस विधि का परिणाम है।
इस उदाहरण में, मान लें कि प्रपत्र में "नाम" नामक तीन फ़ील्ड हैं और हमने तीन नाम "ज़ारा", "हुमा" और "न्यूडा" में दर्ज किए -
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
cgi['name'] # => "Zara"
cgi.params['name'] # => ["Zara", "Huma", "Nuha"]
cgi.keys # => ["name"]
cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}
Note- रूबी स्वचालित रूप से GET और POST विधियों का ध्यान रखेगी। इन दो अलग-अलग तरीकों के लिए कोई अलग उपचार नहीं है।
एक संबद्ध, लेकिन मूल, फॉर्म जो सही डेटा भेज सकता है, उसमें HTML कोड होगा जैसे -
<html>
<body>
<form method = "POST" action = "http://www.example.com/test.cgi">
First Name :<input type = "text" name = "FirstName" value = "" />
<br />
Last Name :<input type = "text" name = "LastName" value = "" />
<input type = "submit" value = "Submit Data" />
</form>
</body>
</html>
प्रपत्र और HTML बनाना
सीजीआई में HTML बनाने के लिए उपयोग की जाने वाली विधियों की एक बड़ी संख्या है। आपको प्रति टैग एक विधि मिलेगी। इन विधियों को सक्षम करने के लिए, आपको CGI.new पर कॉल करके एक CGI ऑब्जेक्ट बनाना होगा।
टैग नेस्टिंग को आसान बनाने के लिए, ये विधियाँ अपनी सामग्री को कोड ब्लॉक के रूप में लेती हैं। कोड ब्लॉक को एक स्ट्रिंग लौटना चाहिए , जिसका उपयोग टैग के लिए सामग्री के रूप में किया जाएगा। उदाहरण के लिए -
#!/usr/bin/ruby
require "cgi"
cgi = CGI.new("html4")
cgi.out {
cgi.html {
cgi.head { "\n"+cgi.title{"This Is a Test"} } +
cgi.body { "\n"+
cgi.form {"\n"+
cgi.hr +
cgi.h1 { "A Form: " } + "\n"+
cgi.textarea("get_text") +"\n"+
cgi.br +
cgi.submit
}
}
}
}
NOTE- CGI क्लास का फॉर्म मेथड एक मेथड पैरामीटर स्वीकार कर सकता है, जो फॉर्म सबमिटल पर इस्तेमाल करने के लिए HTTP मेथड (GET, POST, और इसी तरह ...) सेट करेगा। इस उदाहरण में प्रयुक्त डिफ़ॉल्ट, POST है।
यह निम्नलिखित परिणाम का उत्पादन करेगा -
Content-Type: text/html
Content-Length: 302
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">
<HTML>
<HEAD>
<TITLE>This Is a Test</TITLE>
</HEAD>
<BODY>
<FORM METHOD = "post" ENCTYPE = "application/x-www-form-urlencoded">
<HR>
<H1>A Form: </H1>
<TEXTAREA COLS = "70" NAME = "get_text" ROWS = "10"></TEXTAREA>
<BR>
<INPUT TYPE = "submit">
</FORM>
</BODY>
</HTML>
स्ट्रिंग का हवाला देते हुए
URL और HTML कोड के साथ काम करते समय, आपको कुछ वर्णों को उद्धृत करने के लिए सावधान रहना चाहिए। उदाहरण के लिए, एक स्लैश चरित्र (/) का URL में विशेष अर्थ है, इसलिए यह होना चाहिएescaped अगर यह pathname का हिस्सा नहीं है।
उदाहरण के लिए, URL के क्वेरी भाग में से किसी भी / को स्ट्रिंग% 2F में अनुवादित किया जाएगा और इसका उपयोग करने के लिए आपको वापस / इसके लिए अनुवाद करना होगा। अंतरिक्ष और एम्परसेंड भी विशेष पात्र हैं। इसे संभालने के लिए, CGI दिनचर्या प्रदान करता हैCGI.escape तथा CGI.unescape।
#!/usr/bin/ruby
require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
यह निम्नलिखित परिणाम का उत्पादन करेगा -
Zara+Ali%2FA Sweet+%26+Sour+Girl")
#!/usr/bin/ruby
require 'cgi'
puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
यह निम्नलिखित परिणाम का उत्पादन करेगा -
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
सीजीआई कक्षा में उपयोगी तरीके
यहां सीजीआई वर्ग से संबंधित विधियों की सूची दी गई है -
रूबी सीजीआई - विधियों स्टैंडर्ड सीजीआई पुस्तकालय से संबंधित।
कुकीज़ और सत्र
हमने इन दो अवधारणाओं को विभिन्न वर्गों में समझाया है। कृपया वर्गों का अनुसरण करें -
रूबी सीजीआई कुकीज़ - कैसे सीजीआई कुकीज़ को संभालने के लिए।
रूबी सीजीआई सत्र - कैसे सीजीआई सत्र प्रबंधित करने।
वेब होस्टिंग सर्वर
आप अपनी वेबसाइट को यूनिक्स-आधारित सर्वर पर होस्ट करने के लिए इंटरनेट पर निम्नलिखित विषय की जांच कर सकते हैं -
यूनिक्स-आधारित वेब होस्टिंग