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

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

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

■ERBとサーバーの設定

ERBというのは、「eRuby」と呼ばれる技術の実装です。これは、HTMLの中にRubyスクリプトを埋め込み、サーバー側で処理するための技術です。

サーバーサイドで多用されるPHPやJavaなどの言語がなぜ急速に広がったか?といえば、これらが標準で「HTMLにコードを埋め込める」ようになっていたからでしょう。それ以前は、CGIといって、プログラムをサーバーに設置し、それを起動して処理を作る、というような形でした。全部プログラムで処理しますから、HTMLのタグなどもプログラムで出力しないといけません。非常に面倒くさかったわけです。HTMLを書いて、その中にちょこちょこっとプログラムを書けばOK、というなら、作るのも非常に簡単です。

Rubyでは、1.8よりこの「HTMLに直接コードを埋め込む」というERBが標準で組み込まれるようになりました。これにより、誰でも比較的簡単にRubyによるサーバーサイド開発ができるようになったのです。


■http.confの設定について

このERBを使うためには、「RubyをCGIとして実行する」「Rubyをサーバー内で処理できるモジュールをサーバーに組み込む」といった方法があります。ここではシンプルなやり方として、CGIで実行する方法を使いましょう。これはサーバーにモジュールを追加する必要がないため、多くの汎用的なサーバーで利用できるはずです。

CGIというのは、決まったディレクトリにプログラムを設置して実行します。現在、もっとも広く使われているApache HTTP Serverの場合、「cgi-bin」というところに設置しないといけません。それ以外の場所に置くと動かないのですね。これはちょっと面倒だし、アクセスするアドレスが全部http://○○/cgi-bin/○○なんてなっているのはあんまりスマートじゃないので、ちょっと細工をしましょう。

ERBを利用する場合、ERBの処理をするCGIスクリプトを設置し、あるページにアクセスしたらそのスクリプトで処理をして表示するようにしておくのが一般的です。ここでは、「cgi-bin」の中に「ruby.cgi」というスクリプトを配置し、「○○.rhtml」という拡張子のファイルはすべてこのスクリプトで処理するようにしておきましょう。

Apache HTTP Serverでは、サーバーの設定としてhttpd.confというファイルが用意されています。これを開き、下のリスト欄の4文を追記してください。《ERBを設置するディレクトリのパス》には、ERBのファイルを配置する場所を指定します。例えば、Cドライブのルートに「httpd」というフォルダでサーバープログラムが用意してあり、その中にある「htdoc」内に「ruby」というフォルダを用意して実行する、なんて場合ならば、
<Directory "C:/httpd/htdocs/ruby">
こんな具合になります。htdocs自体に設定してもかまいませんが、とりあえず学習用にフォルダを用意して、そこに設定しておくと良いでしょう。

レンタルサーバーなどを使っている場合、サーバーのhttpd.confを操作することはできないでしょう。この場合は、スクリプトを設置するディレクトリ内に「.htaccess」というファイルを用意し、そこに以下の2文だけを記述してください。
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/ruby.cgi
これで、同様にそのフォルダのrhtmlファイルがruby.cgiで処理されるようになります。httpd.confを修正した場合には、.htaccessは不要です。どちらかだけ用意すればOKです。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※http.confへの追記

<Directory "《ERBを設置するディレクトリのパス》">
    AddType application/x-httpd-eruby .rhtml
    Action application/x-httpd-eruby /cgi-bin/ruby.cgi
</Directory>
※関連コンテンツ

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