まきです。
現在、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さんという方がいることを知り、
投稿する時の名前をどうしようかと(実際の名字が「まき」なので)。