RubyWebアプリケーション-CGIプログラミング
Rubyは汎用言語です。Web言語とはまったく呼べません。それでも、一般的にWebアプリケーションとWebツールはRubyの最も一般的な使用法の1つです。
Rubyで独自のSMTPサーバー、FTPデーモン、またはWebサーバーを作成できるだけでなく、CGIプログラミングなどのより一般的なタスクやPHPの代わりにRubyを使用することもできます。
CGIプログラミングの詳細については、CGIプログラミングチュートリアルで数分を費やしてください。
CGIスクリプトの作成
最も基本的なRubyCGIスクリプトは次のようになります-
#!/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を呼び出して、適切なアクセス許可を持つUnixベースのWebホスティングプロバイダーにアップロードすると、CGIスクリプトとして使用できます。
たとえば、Webサイトがある場合 https://www.example.com/Linux Webホスティングプロバイダーでホストされており、test.cgiをメインディレクトリにアップロードして実行権限を付与してから、https://www.example.com/test.cgi 次のようなHTMLページを返す必要があります This is a test。
ここで、Webブラウザーからtest.cgiが要求されると、WebサーバーはWebサイトでtest.cgiを探し、Rubyインタープリターを使用してそれを実行します。Rubyスクリプトは、基本HTTPヘッダーを返し、次に基本HTMLドキュメントを返します。
cgi.rbの使用
Rubyには、という特別なライブラリが付属しています 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オブジェクトを作成し、それを使用してヘッダー行を印刷しました。
フォーム処理
クラスCGIを使用すると、2つの方法でHTMLクエリパラメータにアクセスできます。/cgi-bin/test.cgi?FirstName = Zara&LastName = AliのURLが与えられたとします。
次のように、CGI#[]を使用してパラメータFirstNameおよびLastNameに直接アクセスできます。
#!/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"]
フォームに同じ名前の複数のフィールドが含まれている場合、対応する値が配列としてスクリプトに返されます。[]アクセサーは、これらすべてを取得するために、これらの最初の.indexをparamsメソッドの結果として返します。
この例では、フォームに「name」という3つのフィールドがあり、「Zara」、「Huma」、「Nuha」の3つの名前を入力したとします。
#!/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−RubyはGETメソッドとPOSTメソッドを自動的に処理します。これらの2つの異なる方法に別々の治療法はありません。
正しいデータを送信できる、関連付けられているが基本的なフォームには、次のような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の作成
CGIには、HTMLの作成に使用される膨大な数のメソッドが含まれています。タグごとに1つのメソッドがあります。これらのメソッドを有効にするには、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クラスのformメソッドは、フォーム送信で使用される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 パス名の一部でない場合。
たとえば、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>'
CGIクラスの便利なメソッド
これがCGIクラスに関連するメソッドのリストです-
RubyのCGI -標準CGIライブラリーに関連するメソッド。
クッキーとセッション
これらの2つの概念については、さまざまなセクションで説明しました。セクションに従ってください-
RubyのCGIクッキー- CGIクッキーを処理する方法。
RubyのCGIセッション- CGIセッションを管理する方法。
Webホスティングサーバー
インターネットで次のトピックをチェックして、UnixベースのサーバーでWebサイトをホストできます。
UnixベースのWebホスティング