Investiguei nosso código e parece que o erro é relativamente simples, mas gostaria de verificar minhas suposições.
Temos uma configuração de site chamada slug_generation_method que precisa ser alterada do valor padrão ascii para encoded para ativar esse bug. Quando você altera essa configuração de site, limpamos todos os slugs e os geramos novamente.
O que não entendo é por que, quando a configuração de site está definida como “encoded”, geramos um slug assim:
[3] pry(main)> SiteSetting.slug_generation_method
=> "encoded"
[4] pry(main)> Slug.for(t.slug)
=> "キノの旅-home-thread-intermediate-book-club"
enquanto eu esperava que “encoded” significasse algo como
[5] pry(main)> CGI.escape(Slug.for(t.slug))
=> "%E3%82%AD%E3%83%8E%E3%81%AE%E6%97%85-home-thread-intermediate-book-club"
Isso parece vir de
O slug bruto da tabela é retornado no cabeçalho Location da resposta 301 quando o slug de um tópico não corresponde, e, na minha opinião, deveríamos retornar uma URL válida ali.