すがブロ

sugamasaoのhatenablogだよ

プログラム・ザ・Ruby(その3)

 前回の続き(1回目:id:seiunsky:20060118・2回目:id:seiunsky:20060119)

 さて、Webアプリのようなことをする時にHTMLベースでプログラムを書けると便利だよね、という訳でeRubyという技術があるという話まで書いた。

 eRubyには現在、二つの処理系がある。

erbは現在のrubyのバージョン(1.8x)では同梱されているので特別な手順を踏まなくても実行環境を作ることができる。
erubyについては適当に解凍してパスを通すことでローカル環境での実行環境を作ることができる。erubyのWindows版が見つからないよ!と言う人はここからDLしてくれ。
 ……なんつーか、これをしなきゃ始まらないだろっていう(windows版の)DLの方法でオレは詰まったんだけど、こういうところくらいは最低限キチンとアナウンスするべきだと思うんだが、どうだろう。もしかして、オレにその手のものを探すセンスが決定的に欠けているから時間が掛かったのだろうか。
 まぁ、とにもかくにもこれでローカルの環境は整う。
erbを使うならruby、erubyを使うならerubyのパスが正しく設定されていれば、
以下のようなHTML内に埋め込まれたスクリプトを実行して、標準出力として出力される。

<html>
	<head>
	<title>Ruby test</title>
	</head>
	<body>
	<h1><%="一行のみ"%></h1>
	<%
		str = "複数でもできる"
		print "<p>", str, "</p>"
	%>
	<%
		for i in 0..5
			print i,"回目の繰り返し<br>\n"
		end
		print "str.length = ",str.length,"<br>\n"
		print "str.size = ",str.size,"<br>\n"
	%>
	</body>
</html>

 例えば、これをtest.html等にして、

erb test.html

eruby test.html

などと実行すると、処理されるのがわかるだろう。
ただし、【erb】で実行するとスクリプト内で出力される部分が先に表示され、その後HTMLのタグが出力される。
また、【eruby】だと妙に改行が多く入るかもしれない。
実際にWeb上で実行するようにするとあまり影響は無いので気にしないほうがちょとだけ幸せである。
色々回避策とかもあるらしいけど、探す時間に見合う結果があるのかというと微妙なのでここでは書かない。オレもよくわからないし。
さて、このあとapacheの設定を行えば実際にweb上でeRubyを実行できるようになる。
というわけで、次回へ続く。