O value too long for type character varying(1000) indica para mim que está relacionado ao trecho. Isso é surpreendente porque tecnicamente limitamos os trechos em 150 caracteres, então este caso nunca deveria acontecer. Inicialmente, pensei que fosse um bug em nosso construtor de trechos, mas olhando o código do trecho no chat, vi isto:
def build_excerpt
# apenas mostra o URL se a mensagem inteira for um URL, pois não podemos criar trechos de oneboxes
return message if UrlHelper.relaxed_parse(message).is_a?(URI)
# mensagens apenas de upload são melhor representadas como o nome do arquivo
return uploads.first.original_filename if cooked.blank? && uploads.present?
# isso pode retornar em branco para algumas coisas complexas como citações, o que é aceitável
PrettyText.excerpt(cooked, EXCERPT_LENGTH, strip_links: true, keep_mentions: true)
end
Uma depuração rápida mostrou que, na verdade, nunca chegamos a PrettyText.excerpt e paramos no primeiro return. Aparentemente, o ??? está fazendo nosso código pensar que isso é um URL:
[1] pry(main)> UrlHelper.relaxed_parse("???\ntest").is_a?(URI)
=> true