人気ブログランキング | 話題のタグを見る

eRuby

Windows の Apace で eRuby を使いたくて、ネットを探し回ったが結局分からなかったので、CGI と erb.rb を利用して自作(?)した。

httpd.conf を、スタートメニューの中の Apace メニューから開いて、

<Directory "C:/Program Files/Apache Group/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

の Options None を Options ExecCGI に変更して /cgi-bin/ で CGI が使えるようにして、さらに、

# Filters ... のセクションに
AddType application/x-httpd-eruby .rhtml
# Action ... のセクションに
Action application/x-httpd-eruby /cgi-bin/erb_cgi.cgi

を追加して、*.rhtml なファイルがリクエストされたとき、erb_cgi.cgi スクリプトが呼び出されるようにした。リクエストされたファイルは、環境変数 PATH_TRANSLATED でスクリプトに渡される。

最後に、次のスクリプト erb_cgi.cgi を /cgi-bin/ ディレクトリに作成した。

#!C:/Program Files/ruby-1.8/bin/ruby

require 'erb'

print "Content-Type: text/html\n\n"
ERB.new(IO.read(ENV['PATH_TRANSLATED'])).run

Apache を再起動したら、好きなところにおいた *.rhtml ファイルがレンダリングされて出てきた。昨日から悩んでいたわりには、簡単な解決法だった。動作は遅いけれど自分用だから、まあ、いいか。

*注意! eruby と erb は仕様が違うので注意が必要だ。erb では <% タグの中の print 文は その位置に展開されるのではなく標準出力に出力される。eruby で動作していた *.rhtml ファイルが動かないときは <% タグの中のprint を削除して、引数を <%= タグの中に入れるようにすると同じように動作するはずだ。

ただ、erb の仕様だと ruby スクリプトを HTML 以外のどんな文書にも埋め込むことができる。たとえば、アルゴリズム関係の記事をぐりぐりテキストファイルなどに書いていて、その中にルビーのサンプルプログラムを埋め込んでおいても、erb sample.txt でサンプルプログラムを実行してみることができる。そのほかにも erb の利点はたくさんあるそうだが、管理人には難しすぎて分からない。

しかし、最近の Ruby は WWWサーバーも、Agile な開発環境も、Ajax も、CGI もサーバーサイドスクリプトも、ブログエンジンも、YAML も JSON も全部自前でやってしまっている。Ruby とウェブブラウザさえあれば何でも簡単にできるという、おそろしいことになってきたものだ。

Ruby on Rails を利用したワープロや表計算が出現したら完璧だ。
by tnomura9 | 2006-05-21 16:16 | Ruby | Comments(2)
Commented by windows_eruby at 2006-05-28 16:13 x
###############################
私はWindowsXP Professional, Ruby1.8.4, Apace1.3.34で eRuby を使用しています。
↓をダウンロード&解凍して
ftp://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ext/eruby-1.0.5-i386-mswin32-1.8.zip
解凍されたフォルダ内のファイルを、Rubyのそれぞれのフォルダに配置します。
############
httpd.confの修正
修正前
Options Indexes FollowSymLinks MultiViews
修正後
Options Indexes FollowSymLinks MultiViews ExecCGI

修正前
#AddHandler cgi-script .cgi
修正後
AddHandler cgi-script .cgi
############test.cgi
#!/usr/bin/eruby -C -Ks

<html>
<head>
<title>Japan日本ニッポン</title>
</head>

<body>

<p><%= "時刻は " + Time.now.to_s %></p>

</body>
</html>
############
http://127.0.0.1/cgi-bin/test.cgi
時刻は Sun May 28 15:48:38 東京 (標準時) 2006
############
Commented by tnomura9 at 2006-05-30 07:53 x
コメントをありがとうございました。
Windows でも eruby が使えるんですね。
<< Ajax Agile と Ajax >>