ERBによるWebアプリケーション開発 (2/3)
作成:2013-06-16 12:18
更新:2013-06-16 12:18
更新:2013-06-16 12:18
■ERBクラスでCGIスクリプトを作る
では、「cgi-bin」内に設置するスクリプト(ここでは「ruby.cgi」)を作成しましょう。
下のリスト欄にそのサンプルを挙げておきました。こんな形で記述をしてください。なお、ここではRuby 2.0のx64版の形で書いてあります。一番最初に、
こうありますが、ここで実行するrubyプログラムのパスをそれぞれの環境に応じて変更してください。例えば、Cドライブに「ruby1.9」といった名前でRubyをインストールしてあるなら、
こんな具合にすればいいでしょう。レンタルサーバーの場合、Rubyのインストール場所はサーバーにより異なりますので、それぞれの環境を確認してそれに合わせてください。
さて、ここではERBクラスを使う最小限の処理だけが書いてあります。まず、必要なライブラリをロードしておきます。これは以下の2文です。
・スクリプトをERBで実行する
・ファイルを読み込んで中身を返す
・最初にアクセスした元のパスを返す
このruby.cgiは、あるrhtmlファイルにアクセスすると、このruby.cgiに転送されて処理が実行される、というものです。そこで、「最初のアクセス元のrhtmlを読み込んで、それをERBで処理し結果を出力する」というような形にする必要があります。これはそのための処理だったわけですね。
というわけで、これでERBを使ったスクリプトを実行できるようになりました!
下のリスト欄にそのサンプルを挙げておきました。こんな形で記述をしてください。なお、ここではRuby 2.0のx64版の形で書いてあります。一番最初に、
#! /Ruby200-x64/bin/ruby
こうありますが、ここで実行するrubyプログラムのパスをそれぞれの環境に応じて変更してください。例えば、Cドライブに「ruby1.9」といった名前でRubyをインストールしてあるなら、
#! /ruby1.9/bin/ruby
こんな具合にすればいいでしょう。レンタルサーバーの場合、Rubyのインストール場所はサーバーにより異なりますので、それぞれの環境を確認してそれに合わせてください。
■ERBクラスの使い方
さて、ここではERBクラスを使う最小限の処理だけが書いてあります。まず、必要なライブラリをロードしておきます。これは以下の2文です。
require 'erb'ERBの利用には、erbとcgiのライブラリが必要です。この2つはrequireしておきましょう。続いて、アクセスしたページのヘッダー情報を出力します。
require 'cgi'
puts 'Content-Type: text/html; charset=utf-8'HTMLのコンテンツであり、文字コードはUTF-8である、ということをヘッダー情報で送っています。これで準備は完了。後はERBを使うだけです。
puts
ERB.new(IO.read(CGI.new.path_translated)).runなんだかわかったようなわからないようなものですね。ちょっと整理しておきましょう。これは以下の3つの処理をまとめて書いてあるのです。
・スクリプトをERBで実行する
ERB.new( 実行するスクリプト ).run
・ファイルを読み込んで中身を返す
IO.read( ファイルのパス )
・最初にアクセスした元のパスを返す
CGI.new.path_translated
このruby.cgiは、あるrhtmlファイルにアクセスすると、このruby.cgiに転送されて処理が実行される、というものです。そこで、「最初のアクセス元のrhtmlを読み込んで、それをERBで処理し結果を出力する」というような形にする必要があります。これはそのための処理だったわけですね。
というわけで、これでERBを使ったスクリプトを実行できるようになりました!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※ruby.cgiのスクリプト #! /Ruby200-x64/bin/ruby require 'erb' require 'cgi' puts 'Content-Type: text/html; charset=utf-8' puts ERB.new(IO.read(CGI.new.path_translated)).run
※関連コンテンツ