- Description about the talk
- Ruby 3.1 has introduced a gem called "error_highlight", which shows a code snippet with an underline to spot where `NameError` or `NoMethodError` was raised.
```
$ ruby test.rb
test.rb:1:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError)
json[:foo][:bar]
^^^^^^
```
We will talk about the design and implementation of error_highlight: how it works, why and how we designed it, how we resolved the difficulties we faced during implementation, and the feedback we received.
This feature goes further in Ruby 3.2: more error support other than `NameError`/`NoMethodError` and more fine-grained error spotting.
We also redesigned its backend by introducing a new API, `Exception#detailed_message`, which allows us to enhance error messages with fewer incompatibilities. In fact, it allowed simple integration with other error message extensions such as did_you_mean and dead_end.
We will also talk about what we would like users to help us with to make error_highlight better.