Olá - Estou tentando fazer upload de um arquivo CSV com vários tags, mas toda vez recebo a mensagem de erro: “Desculpe, ocorreu um erro ao fazer upload do arquivo. Por favor, tente novamente.”
Os logs no painel de administração dizem:
Mensagem (8 cópias relatadas)
Falha ao processar resposta interceptada corretamente: Validação falhou: Nome é inválido
Backtrace
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/validations.rb:80:in `raise_validation_error'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/validations.rb:53:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `block in save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:212:in `transaction'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/suppressor.rb:48:in `save!'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/persistence.rb:55:in `create!'
Tentei criar um tag fictício, ou seja, apenas uma entrada no arquivo CSV (por exemplo, a palavra java), e recebo a mesma mensagem de erro.
FYI, instalei o Discourse no DigitalOcean usando o guia de instalação oficial e tudo o mais está funcionando corretamente.
Obrigado @codinghorror - por favor, me avise se encontrar algo. Se ajudar, estou executando a versão 2.5.0.beta7 ( 14dc6f350e ) em um Droplet com 4 GB de RAM e 80 GB de SSD.
Além disso, instalei os plugins akismet, formatting-toolbar e discourse-voting.
Acabei de testar isso no try.discourse.org. Usei um editor de texto básico para criar um arquivo CSV chamado tags.csv contendo apenas a palavra java e consegui usar a ferramenta de upload em massa de tags para adicionar a nova tag sem problemas.
O site try.discourse.org possui Akismet e Discourse-voting, e duvido muito que o plugin formatting-toolbar cause algum conflito que resulte no erro que você está vendo.
Você consegue fazer upload de arquivos sem problemas em outros contextos (postagens, temas, etc.)?
O upload ainda falha. Isso tem algo a ver com permissões? Como sou o administrador do site, presumo que deveria ter todas as permissões para fazer isso.
Desta vez, estou usando a versão 2.5.0.beta7 (70e50a2255).
Avise-me se há mais alguma coisa que você gostaria que eu tentasse. Obrigado!
Hmm, tentei renomear meu arquivo para tags-1.csv e ainda não consegui reproduzir o erro. Se você mudar de volta para tags-1.csv e tentar fazer o upload, ele falha novamente? Estou me perguntando se havia algo mais acontecendo no nome do seu arquivo original e se mudar para tags.csv de alguma forma resolveu o problema.
Não, ainda não funciona para mim. No meu Mac, estou apenas fazendo:
$ vi tags-1.csv
Depois, i para entrar no modo de edição java esc para sair do modo de edição :wq e Enter para salvar e sair.
É isso. Isso também falha. Inicialmente, pensei que pudesse ter algo a ver com uma planilha do Excel exportada para CSV, mas, mesmo a edição pela linha de comando está gerando problemas.
Vou continuar por enquanto com tags.csv, mas, se você achar isso importante e quiser que eu execute testes, ficarei feliz em fazer. A mesma coisa aconteceu em dois droplets diferentes com instalações novas, o que me preocupou.
Vejo outro problema (novamente, não tenho certeza se isso está relacionado ao meu ambiente).
Minhas tags são uma lista de linguagens de programação. Eu tinha C++ e C# nessa lista e, assim que as removi do tags.csv, o upload em massa foi concluído com sucesso. Estou me perguntando se isso tem a ver com a tag terminando com um caractere especial. Novamente, pode ser apenas comigo
Sim! Esse é definitivamente o problema. Eu estava pensando que estávamos trabalhando apenas com a palavra java no arquivo, dado seu último post. Você precisaria usar algo como cpp, c-sharp, etc.
Sim, acho que isso seria ideal. O erro atual não oferece muita orientação ao usuário:
Desculpe, ocorreu um erro ao fazer o upload desse arquivo. Por favor, tente novamente.
Uma observação interessante da qual eu não tinha conhecimento: ao tentar criar uma tag nos contextos normais de criação ou edição de tópicos, parece que simplesmente removemos silenciosamente qualquer símbolo. Então, ao digitar C++, ele sugeriria C como a tag.
Eu ia editar o texto (para indicar a possibilidade de tags inválidas), mas acho que esse texto se aplica a todos os uploads, então nem sempre seria preciso.
Uma maneira rápida, na minha opinião, seria adicionar algumas frases sobre isso na seção de Tags das Configurações de Admin, descrevendo as restrições em torno dos nomes de tags.
Sim, isso definitivamente parece ser o caso. Encontrei onde o erro genérico é lançado no código de upload de tags, então vou tentar criar um erro mais específico para este caso em um PR.