まきです。
現在、Redhat9+Apache2.0.47+Ruby1.8.0+mod_ruby1.0.7
という環境で、ERbの勉強をしています。

次のようなスクリプトがhttp経由で実行できず、悩んでいます。

#-ここから
require 'erb'

file=File.open("sample.html","r"){|io| io.read}
begin
  erb=ERB.new(file)
  erb.run(binding)
rescue
  printf("%sが発生しました.\n",$!)
end
#-ここまで

Rubyスクリプトからsample.htmlという
同一ディレクトリのファイルを読み出し、
Erbでパースして、そのまま吐き出すという
スクリプトです。

このスクリプトをRedhat9上のコマンドラインで
実行すると、期待した通りの動きをします。

しかし、http経由でアクセスすると
> Insecure operation - evalが発生しました. 
言われてしまいます。

ERB.newでのセキュリティレベルの問題かとも思ったのですが、

ERB.new(file,0)とすると、セキュリティレベルは
>tried to downgrade safe level from 1 to 0が発生しました
(まぁ、これは当然かも)

evalが認められるはずのERB.new(file,4)でも
> Insecure: can't modify trusted bindingが発生しました. 
と云われます。

rubyスクリプトに実際にhtmlを書き込んだ場合は、
コマンドラインでもhttp経由でも動作します。


Apache/mod_rubyも問題かもしれませんが、どうかよろしくお願いします。


追記: Rubyのトップページを見ていたら、
メンテナの一人にmakiさんという方がいることを知り、
投稿する時の名前をどうしようかと(実際の名字が「まき」なので)。