libro
www.tuyano.com
初心者のためのRubyプログラミング入門

ERBによるWebアプリケーション開発 (2/3)

作成:2013-06-16 12:18
更新:2013-06-16 12:18

■ERBクラスでCGIスクリプトを作る

では、「cgi-bin」内に設置するスクリプト(ここでは「ruby.cgi」)を作成しましょう。

下のリスト欄にそのサンプルを挙げておきました。こんな形で記述をしてください。なお、ここではRuby 2.0のx64版の形で書いてあります。一番最初に、
#! /Ruby200-x64/bin/ruby

こうありますが、ここで実行するrubyプログラムのパスをそれぞれの環境に応じて変更してください。例えば、Cドライブに「ruby1.9」といった名前でRubyをインストールしてあるなら、
#! /ruby1.9/bin/ruby

こんな具合にすればいいでしょう。レンタルサーバーの場合、Rubyのインストール場所はサーバーにより異なりますので、それぞれの環境を確認してそれに合わせてください。


■ERBクラスの使い方

さて、ここではERBクラスを使う最小限の処理だけが書いてあります。まず、必要なライブラリをロードしておきます。これは以下の2文です。
require 'erb'
require 'cgi'
ERBの利用には、erbcgiのライブラリが必要です。この2つはrequireしておきましょう。続いて、アクセスしたページのヘッダー情報を出力します。
puts 'Content-Type: text/html; charset=utf-8'
puts
HTMLのコンテンツであり、文字コードはUTF-8である、ということをヘッダー情報で送っています。これで準備は完了。後はERBを使うだけです。
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を使ったスクリプトを実行できるようになりました!

※プログラムリストが表示されない場合

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
※関連コンテンツ

「初心者のためのRubyプログラミング入門」に戻る