ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:105428] [Ruby master Bug#18194] No easy way to format exception messages per thread/fiber scheduler context.
@ 2021-09-26 20:44 ioquatix (Samuel Williams)
  2021-09-26 20:57 ` [ruby-core:105429] " ioquatix (Samuel Williams)
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: ioquatix (Samuel Williams) @ 2021-09-26 20:44 UTC (permalink / raw)
  To: ruby-core

Issue #18194 has been reported by ioquatix (Samuel Williams).

----------------------------------------
Bug #18194: No easy way to format exception messages per thread/fiber scheduler context.
https://bugs.ruby-lang.org/issues/18194

* Author: ioquatix (Samuel Williams)
* Status: Open
* Priority: Normal
* Assignee: mame (Yusuke Endoh)
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
In the new error highlighting gem, formatting exception messages appears to be per-process which is insufficiently nuanced for existing use cases.

As in:

```ruby
class TerminalColorFormatter
  def message_for(spot)
    # How do we know the output format here? Maybe it's being written to a log file?
    "..."
  end
end

ErrorHighlight.formatter = TerminalColorFormatter.new
```

But we won't know until the time we actually write the error message whether terminal codes are suitable or available. Or an error message might be formatted for both the terminal and a log file, which have different formatting requirements. There are many consumers of error messages an some of them produce text, or HTML, or JSON, etc.

Because of this design we are effectively forcing everyone to parse the default text output if they want to do any kind of formatting, which will ossify the format and make it impossible in practice for anyone to use anything but the default `ErrorHighlight.format`. For what is otherwise a really fantastic idea, this implementation concerns me greatly.

I would like us to consider introducing sufficient metadata on the exception object so that complete formatting can be implemented by an output layer (e.g. logger, terminal wrapper, etc). This allows the output layer to intelligently format the output in a suitable way, or capture the metadata to allow for processing elsewhere.

In addition, to simplify this general usage, we might like to introduce `Exception#formatted_message`.

In order to handle default formatting requirements, we need to provide a hook for formatting uncaught exceptions. This would be excellent for many different use cases (e.g. HoneyBadger type systems), and I suggest we think about the best interface. Probably a thread-local with some default global implementation makes sense... maybe even something similar to `at_exit { ... $! ... }`.



-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-09-23  7:38 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-26 20:44 [ruby-core:105428] [Ruby master Bug#18194] No easy way to format exception messages per thread/fiber scheduler context ioquatix (Samuel Williams)
2021-09-26 20:57 ` [ruby-core:105429] " ioquatix (Samuel Williams)
2021-09-27  3:55 ` [ruby-core:105434] " ioquatix (Samuel Williams)
2021-09-27  4:07 ` [ruby-core:105437] " ioquatix (Samuel Williams)
2021-09-27  8:02 ` [ruby-core:105442] " mame (Yusuke Endoh)
2021-09-27 10:12 ` [ruby-core:105448] " Eregon (Benoit Daloze)
2021-09-27 10:53 ` [ruby-core:105449] " mame (Yusuke Endoh)
2021-09-27 22:01 ` [ruby-core:105456] " ioquatix (Samuel Williams)
2021-09-28  2:13 ` [ruby-core:105459] " mame (Yusuke Endoh)
2021-09-28  2:16 ` [ruby-core:105460] " ioquatix (Samuel Williams)
2021-09-28  2:26 ` [ruby-core:105461] " mame (Yusuke Endoh)
2021-09-29  0:42 ` [ruby-core:105478] [Ruby master Bug#18194] No easy way to format exception messages per thread/fiber scheduler context.If you like, I can ask my contacts at several different APM companies to give their opinion too ioquatix (Samuel Williams)
2021-09-29  0:43 ` [ruby-core:105479] [Ruby master Bug#18194] No easy way to format exception messages per thread/fiber scheduler context ioquatix (Samuel Williams)
2021-09-29  5:35 ` [ruby-core:105483] [Ruby master Feature#18194] " mame (Yusuke Endoh)
2021-09-29 10:10 ` [ruby-core:105486] " Eregon (Benoit Daloze)
2022-09-23  7:38 ` [ruby-core:110036] " ioquatix (Samuel Williams)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).