Ruby 是一門通用的語言,不僅僅是一門應用于WEB開發的語言,但 Ruby 在WEB應用及WEB工具中的開發是最常見的。
使用Ruby您不僅可以編寫自己的SMTP伺服器,FTP程式,或Ruby Web伺服器,而且還可以使用Ruby進行CGI程式設計。
接下來,讓我們花點時間來學習Ruby的CGI編輯。
為了更好的了解CGI是如何工作的,我們可以從在網頁上點選一個連結或URL的流程:
1、使用你的浏覽器通路URL并連接配接到HTTP web 伺服器。
2、Web伺服器接收到請求資訊後會解析URL,并查找通路的檔案在伺服器上是否存在,如果存在傳回檔案的内容,否則傳回錯誤資訊。
3、浏覽器從伺服器上接收資訊,并顯示接收的檔案或者錯誤資訊。
CGI程式可以是 Ruby 腳本,Python 腳本,PERL 腳本,SHELL 腳本,C 或者 C++ 程式等。
在你進行CGI程式設計前,確定您的Web伺服器支援CGI及已經配置了CGI的處理程式。
Apache 支援CGI 配置:
設定好CGI目錄:
所有的HTTP伺服器執行CGI程式都儲存在一個預先配置的目錄。這個目錄被稱為CGI目錄,并按照慣例,它被命名為/var/www/cgi-bin目錄。
CGI檔案的擴充名為.cgi,Ruby 也可以使用 .rb 擴充名。
預設情況下,Linux伺服器配置運作的cgi-bin目錄中為/var/www。
如果你想指定其他運作CGI腳本的目錄,可以修改httpd.conf配置檔案,如下所示:
在 AddHandler 中添加 .rb 字尾,這樣我們就可以通路 .rb 結尾的 Ruby 腳本檔案:
最基本的 Ruby CGI 代碼如下所示:
你可以将該代碼保持到 test.cgi 檔案中,上次到伺服器并賦予足夠權限,即可作為 CGI 腳本執行。
如果你站的的位址為http://www.example.com/ ,即可用過http://www.example.com/test.cgi 通路該程式,輸出結果為: "This is a test."。
浏覽器通路該網址後,Web 伺服器會在站點目錄下找到 test.cgi檔案,然後通過Ruby解析器來解析腳本代碼并通路HTML文檔。
Ruby 可以調用 CGI 庫來編寫更複雜的CGI腳本。
以下代碼調用了 CGI 庫來建立一個腳本的CGI腳本。
以下代碼中,建立了CGI 對象并列印頭部資訊。
使用CGI庫可以通過兩種方式擷取表單送出(或URL中的參數)的資料,
例如URL:/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali。
你可以使用 CGI#[] 來直接擷取參數FirstName和LastName:
另外一種擷取表單資料的方法:
以下代碼用于檢索所有的鍵值:
如果表單包含了多個相同名稱的字段,則該相同字段的值将儲存在數組中。
以下執行個體中,指定表單中三個相同的字段"name",值分别為 "Zara", "Huma" 和 "Nuha":
注意:Ruby 會自動判斷 GET 和 POST 方法,是以無需對兩種方法差別對待。
以下是相關的HML代碼:
CGI 包含了大量的方法來建立 HTML,每個HTML标簽都有相對應的方法。
在使用這些方法前,比必須通過 CGI.new 來建立 CGI 對象。
為了使标簽的嵌套更加的簡單,這些方法将内容作為了代碼塊,代碼塊将傳回字元串作為标簽的内容。如下所示:
當你在處理 URL 中的參數或者 HTML 表單資料時,需要對指定的特殊字元進行轉義,如:引号("),反斜杠(/)。
Ruby CGI 對象提供了CGI.escape 和 CGI.unescape 方法來處理這些特殊字元的轉義:
以上代碼執行結果如下:
另一組執行個體:
以下是Ruby中完整的CGI類的相關方法
Ruby CGI - 标準 CGI 庫相關方法
Ruby CGI Cookies - 如何處理 CGI Cookies.
Ruby CGI Sessions - 如何處理 CGI sessions.