ERB オブジェクトには filename
と lineno
という attribute がある。
これに設定した値はエラー時の Stack Trace で表示される。
$ ruby run_erb_with_error.rb
run_erb_with_error.rb:6:in `<main>': undefined local variable or method `unknown_variable' for main (NameError)
from ~/.anyenv/envs/rbenv/versions/3.3.1/lib/ruby/3.3.0/erb.rb:429:in `eval'
from ~/.anyenv/envs/rbenv/versions/3.3.1/lib/ruby/3.3.0/erb.rb:429:in `result'
from ~/.anyenv/envs/rbenv/versions/3.3.1/lib/ruby/3.3.0/erb.rb:414:in `run'
from run_erb_with_error.rb:12:in `<main>'
別ファイルの ERB を参照する場合はそのファイル名を、インラインで ERB を記述する場合は、 __FILE__
, __LINE__
を活用して設定しておくと便利。
References
-
https://www.rubydoc.info/stdlib/erb/ERB
- ※ るりま には lineno などの項目がないが、 rubydoc.info 上のドキュメントには記載されている。