Bestimmte Nachrichten können im Chat nicht gesendet werden

Der Fehler value too long for type character varying(1000) deutet für mich darauf hin, dass er mit dem Exzerpt zusammenhängt. Das ist überraschend, da wir Exzerpte technisch auf 150 Zeichen begrenzen, dieser Fall also nie eintreten sollte. Zuerst dachte ich, es sei ein Fehler in unserem Exzerpt-Builder, aber als ich mir den Exzerpt-Code im Chat angesehen habe, sah ich Folgendes:

def build_excerpt
  # Zeige nur die URL an, wenn die gesamte Nachricht eine URL ist, da wir keine Oneboxen aus Exzerpten erstellen können
  return message if UrlHelper.relaxed_parse(message).is_a?(URI)

  # Nur-Upload-Nachrichten werden besser durch den Dateinamen dargestellt
  return uploads.first.original_filename if cooked.blank? && uploads.present?

  # Dies kann für einige komplexe Dinge wie Zitate leer zurückgeben, das ist akzeptabel
  PrettyText.excerpt(cooked, EXCERPT_LENGTH, strip_links: true, keep_mentions: true)
end

Schnelles Debugging hat gezeigt, dass wir PrettyText.excerpt tatsächlich nie erreichen und beim ersten return stoppen. Anscheinend denkt unser Code wegen der ???, dass es sich um eine URL handelt:

[1] pry(main)> UrlHelper.relaxed_parse("???\ntest").is_a?(URI)
=> true
3 „Gefällt mir“