2

デフォルトでは、Erubis テンプレートでエラーが発生すると、次のような結果が得られます。

(erubis):32:in `evaluate': compile error (SyntaxError)
(erubis):30: syntax error, unexpected ')', expecting ']'
(erubis):32: unterminated string meets end of file

行番号はテンプレートを参照しています。

テンプレートが 1 つしかない場合はそれで問題ありませんが、私は多数のテンプレート ファイルをバッチ処理しています。上記をより使いやすいエラー メッセージに置き換える最善の方法は何(erubis):32ですか?

レスキューして、例外オブジェクトをいじって、もう一度発生させることを考えましたが、Erubis API (または他の方法) によって提供されるより簡単な方法があるかどうか疑問に思っています。

4

2 に答える 2

2

:filenameパラメーターをErubisに渡すことができます。

eruby = Erubis::Eruby.new(string, :filename=>"file.rhtml")
于 2011-02-23T11:39:33.710 に答える
0

Erubis APIを使用してこれを行うためのより良い方法があるのではないかと私はまだ思っていますが、これが機能しているように見える私が書いたコードです。

def compile_template(template_path, template_str, context, &block)
  begin
    Erubis::Eruby.new(template_str).evaluate(context, &block)
  rescue Exception => exc
    trace_normalizer = lambda { |line| line.gsub(/^\(erubis\):/, template_path + ':') }
    backtrace = exc.backtrace.collect(&trace_normalizer)
    message = trace_normalizer.call(exc.message)
    raise exc.class, message, backtrace
  end
end
于 2011-02-19T02:15:14.523 に答える