$Id: erbcgi.html,v 1.1 2000/04/24 15:18:08 mas Exp $
‥作成中‥
最近になってようやっとeRubyなCGIを書くようになりました。 このページは erb-1.2 に同梱される erbcgi.rb を使って CGIを書いてみるメモです。 運が良ければ Web server を変更せずにeRubyなCGIが試せます。
eRubyスクリプトを実行するRubyスクリプトですが、次の特徴があります。
#!/usr/local/bin/ruby ...
の行を
出力しません。
→ eRubyスクリプトを、それ自身実行可能なシェルスクリプトの様に書けます。
コマンドラインでとりあえず使うには、 ruby erbcgi.rbに続けて eRuby スクリプトのファイルを渡します。
% ruby erbcgi.rb yourscript.rhtml
このままでは、従来のerb.rb/erbl.rbとほとんど変わりませんね。
erbcgi.rbでは、
eRubyスクリプトのファイルの最初の行に以下のように
ruby インタプリタ、erbcgi.rb を書いて、
chmod +x すると、./yourscript.rhtml で実行できます。
#!/usr/local/bin/ruby /usr/local/lib/ruby/site_ruby/1.4/erb/erbcgi.rb
あとはいつものeRubyスクリプトと同様に書けます。
環境変数 SCRIPT_FILENAME
がセットされていると、
そのディレクトリを $: に追加します。
ライブラリなどを require するときにちょっと便利。
erbcgi.rb から起動される eRuby スクリプトには
_erb
という特別な変数が定義されています。
これは ERbCGI クラスのオブジェクトです。
_erb.body
、_erb.head
の二つの属性を
変更することでボディやヘッダの内容を制御することができます。
_erb.head['Content-Type']="text/html"
が
デフォルトですが、上書きできます。次のサンプルコードはbodyを初期化する例です。
<% begin %> なにか <% rescue %> エラーが起きた! ボディを初期化したいぞ。 <% _erb.body = '' %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML><TITLE>エラー</TITLE></HTML> などなど <% end %>