Ошибка следов в Erubis - PullRequest
       28

Ошибка следов в Erubis

2 голосов
/ 19 февраля 2011

По умолчанию, когда шаблон Erubis выдает ошибку, вы получаете что-то вроде этого:

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

Номера строк относятся к шаблону.

Это все хорошо, когдау вас есть только один шаблон, но я обрабатываю несколько файлов шаблонов.Какой лучший способ заменить вышеприведенное на более удобное сообщение об ошибке, например, показывающее путь к исходному файлу вместо (erubis):32?

Я думал о спасении, возиться с объектом исключенияи снова поднимается, но мне интересно, есть ли более простой способ, предоставляемый Erubis API (или каким-либо другим).

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Вы можете передать: параметр имени файла в Erubis.

eruby = Erubis::Eruby.new(string, :filename=>"file.rhtml")
0 голосов
/ 19 февраля 2011

Я все еще подозреваю, что может быть лучший способ сделать это с помощью API Erubis, но вот код, который я написал, который, кажется, работает:

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
...