| Ruby Earrings |
CGI 作っていて何がイヤかって、プログラムの中に文字列リテラルで HTML を埋め込むのがイヤー!! Perl の CGI にもよく出てくる print 文のオンパレード、あれって見た目をちょっと変えようとしただけですんごい手間なんですよね。マイナーな話で申し訳ないんですけど、以前 PL/SQL で CGI モドキ書いたことがあって、あの時はホント死ぬかと思いましたもの。 あれだけはもう二度としたくない。
Perl の CGI って、一番外側の形式が Perl スクリプトじゃないですか、アタリマエですけど。実は Ruby で CGI 書いても、その点に関しては同じことなんですよね。ガワの形式がスクリプトである以上、どうしたって HTML は日陰者で、文字列リテラルの中に隠れるしかないんです。そこがヤなんです。CGI のうち、表示のところは HTML 以外のなにものでもないのに、まともに HTML として記述できない、ってのが、イヤッ。書きにくい。直しにくい。時間をとる。わたしの青春を返して!!ってカンジなんです(←ちょっとキミ図々しいよ)。わたくしのこの悩みはつまり、ガワがスクリプトなのが原因なんですね。平和な日々を取り戻すには、ガワを HTML にしなくちゃいけないんですよ。そのためにはどうすればいいか。eRuby を使えばガワを HTML にできるんです。 HTML のなかに Ruby スクリプト断片を散りばめることができる。ブラボー。すてき!
ASP, JSP ご存知のかたは、それと同じ形式で、言語が VBS や Java ではなくて Ruby になったヤツ、っていう説明でおわかりになりますか。eRuby を使う利点として、 HTML オーサリングツールを使って直接編集できる、ということが挙げられます。ASP タグを認識して書き換えずにおいといてくれるヤツがあるんですよ。Macromedia の Dreamweaver で編集できることを個人的に確認済み。他に eRuby をいじれるオーサリングツールがあったら、わたくしにも教えて下さいな。 ここに載せたいです。
で、実際のところ、「Ruby は知ってるけど、eRuby ってナニよ?」というかたのほうが多いと思いますので。そのへんから説明します。
eRuby は embedded Ruby の略です。えっと多分(コラコラ)。 任意のドキュメントに Ruby のスクリプトを <%Ruby_script_fragment%> のカタチで埋め込んだモノ。eRuby スクリプトと呼ばれるようです。
<%Ruby_script_fragment%> 自体をどう呼ぶか、というのは決まっていないようですが、ここでは「eRuby タグ」と呼ぶことにします(どなたか正しい呼称教えてクダサイ)。eRuby タグ外の部分は「地の文」と呼びます。また、HTML に eRuby タグを埋め込んだものを「eRuby HTML」と呼ぶことにします。
さてさて、名前の話はおしまい。実際どのようなものか見てみましょう。まずモトになる HTML を。
<html><head><title>eRuby test</title></head><body> <p>Just another Ruby Hacker,</p> </body></html>
エ、それってタダの HTML じゃないの、って、そうですよ。これを題材に進むんです。さて、上の HTML と同じ出力をする eRuby HTML の例を示します。
<html><head><title>eRuby test</title></head><body>
<p><%="Just another Ruby Hacker,"%></p>
</body></html>
さっきのタダの HTML とほとんど同じです。Just another Ruby Hacker, のかわりに、 <%="Just
another Ruby Hacker,"%> という eRuby タグになっているだけです。どうでしょう、HTML が日陰者ではなくなったのがおわかりになりますでしょうか。当然これをこのままブラウザで見てもダメですよ。eRuby
として解釈して、その結果を見るわけです。
解釈。そうでした、解釈するには eRuby スクリプトを解釈するモノが要るんです。オレんとこには ruby あるよ、って?
いえいえ、ruby は Ruby スクリプトしか解釈しませんよ。eRuby スクリプトを解釈するには eruby (か、 erb.rbか、 mod_ruby
つきの apache) が必要です。わたくしが eruby しか使っておりませんので、ここに書いてあるスクリプト等が eruby 以外で動くかどうかはナゾです。この際ですから eruby をインストールしてしまいましょう(強引)。ダウンロードはこちらから。あと、このパッチ と このパッチあてといてください。ruby
1.3.3 以上がインストールしてあればすぐ済みます。ほんとにスグです。patch < eruby.diff; patch < eruby.diff2; ./Makefile.RB; make; sudo make install です(大雑把な説明)。
ruby が 1.3.3 以下の場合はこの際 1.4.3 に上げて、そのあと eruby を。
インストールできましたか。できたら、新しいファイルを作ってさっきの eRuby HTML をコピー&ペーストしてください。ファイル名は just.rhtml としましょう。コマンドラインで次のようにタイプして下さい。
% eruby just.rhtml
標準出力に解釈結果が出ます。最初の HTML と同じものができてますよね。パチパチ。インストール成功〜。
しかし、これじゃ生の HTML しか見えません。「オレは HTML を見ればページの様子がこのマブタの裏にありありと浮かぶんだ…」などの特殊技能をお持ちのかたは別として、普通の人はやはりブラウザで見たいだろうと思いますので。そのための設定を説明しますね。わたしはウェブサーバに apache を使っているので、そのための設定しかわかりません。他のウェブサーバをお使いのかたで、同様の設定ができるようなら、ここに載せますので教えて下さいな。では apache の設定を。
まず、eruby を CGI として起動できる場所に置きます。ここでは仮に hostname というマシンの /usr/local/apache/cgi-bin/eruby に置き、http://hostname/cgi-bin/eruby
としてアクセスできるとします。
httpd.conf または .htaccess に、次のような記述をしてください。httpd.conf をいじった場合は
httpd の再起動を忘れないでくださいね。
AddType application/x-httpd-eruby .rhtml Action application/x-httpd-eruby /cgi-bin/eruby
上記設定は、 .rhtml という拡張子のファイルをリクエストされたら、そのファイルを eruby に通した結果を返す、という意味です。早速、さっきの just.rhtml をサーバ経由で見てみましょう。見えましたか? 見えたら設定成功です。もとの HTML にアクセスした画面と、eRuby HTML にアクセスした画面を比べて下さい。同じになってますか。
なんだか本題に入るまでのとこで時間とっちゃってシツレイしました。次は eRuby HTML について書きたいと思います。
| prev || Ruby Earrings || next |