チャットで特定のメッセージを送信できません

value too long for type character varying(1000) は、抜粋に関連していることを示しています。これは驚くべきことです。なぜなら、技術的には抜粋を 150 文字に制限しているため、このケースは決して発生しないはずだからです。最初は抜粋ビルダーのバグだと思いましたが、チャットで抜粋コードを見たところ、次のようなものがありました。

def build_excerpt
  # メッセージ全体がURLの場合はURLのみを表示します。これは、oneboxを抜粋できないためです。
  return message if UrlHelper.relaxed_parse(message).is_a?(URI)

  # アップロード専用メッセージは、ファイル名として表現する方が適切です。
  return uploads.first.original_filename if cooked.blank? && uploads.present?

  # これは、引用などの複雑なものに対して空白を返す可能性がありますが、それは許容されます。
  PrettyText.excerpt(cooked, EXCERPT_LENGTH, strip_links: true, keep_mentions: true)
end

簡単なデバッグにより、実際には PrettyText.excerpt に到達せず、最初の return で停止することがわかりました。どうやら ??? が、このコードがURLであると誤解させているようです。

[1] pry(main)> UrlHelper.relaxed_parse("???\ntest").is_a?(URI)
=> true
「いいね!」 3