Algolia:initialize não funcionando (rails abortado - não sei como construir tarefa)

Olá,

Primeiramente, esta é uma cópia da minha postagem no Algolia-Discourse oficial. Como informado pelo Suporte do Discourse, posso postá-la aqui, portanto, esta é uma mensagem copiada.

Gostaria de configurar nosso Discourse com o Algolia, mas não está funcionando como descrito no GitHub. Tenho a versão mais recente: 3.1.0.beta1.

Para fazer a inicialização, abro meu discourse-docker com

./launcher enter app

Depois disso, tentei diferentes comandos (bundle exec rails ou apenas rails, também rake), mas todos resultam em:

root@rbx-communtity-service-app:/var/www/discourse# LOAD_PLUGINS=1 rails algolia:initialize
rails aborted!
Don’t know how to build task ‘algolia:initialize’ (See the list of available tasks with rails --tasks)
Did you mean? algolia:reindex

Quando executo apenas algolia:reindex, obtenho o seguinte:

root@rbx-communtity-service-app:/var/www/discourse# LOAD_PLUGINS=1 rake algolia:reindex
Clearing users from Algolia
Pushing users to Algolia
..
Successfully pushed xxx users to Algolia
Clearing tags from Algolia
Pushing tags to Algolia
..
Successfully pushed xxx tags to Algolia
Clearing posts from Algolia
Pushing posts to Algolia
rake aborted!
NoMethodError: undefined method `id' for nil:NilClass
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/post_indexer.rb:66:in `to_object'
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/indexer.rb:23:in `block in process!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:71:in `block in find_each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:138:in `block in find_in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `loop'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:137:in `find_in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:70:in `find_each'
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/indexer.rb:21:in `process!'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:36:in `block in algolia_reindex'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `loop'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/querying.rb:22:in `in_batches'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:33:in `algolia_reindex'
/var/www/discourse/plugins/discourse-algolia/lib/tasks/discourse_algolia.rake:7:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:58:in `kernel_load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli/exec.rb:23:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:491:in `exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:34:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/cli.rb:28:in `start'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/exe/bundle:45:in `block in <top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bundler-2.4.1/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => algolia:reindex
(See full trace by running task with --trace)

Alguma ideia sobre qual é o problema?

Obrigado desde já!
M.Anderson

Eu instalei isso no meu site de teste para experimentá-lo e também vejo algo semelhante. Deixe-me ver o que consigo descobrir. :+1:

2 curtidas

Você definiu a configuração do site algolia_discourse_username por acaso?

3 curtidas

Está definido como "system"

1 curtida

algolia:initialize não existe mais. Veja FEATURE: Update to latest algolia gem (#33) · discourse/discourse-algolia@9a1f08f · GitHub

O README.md precisa de uma atualização.

2 curtidas

README atualizado :+1:

2 curtidas

O problema em relação à reindexação ainda existe. Fiz um upgrade completo do discourse, incluindo o Algolia. Além disso, ainda não encontrei uma alteração de código dentro do plugin Algolia. Há planos para trabalhar nisso?

No momento, apenas o readme foi alterado, mas a funcionalidade ainda não está funcionando como inicialmente escrita por mim.

Se necessário, posso enviar logs recentes do console.

Obrigado,
M.Anderson

Houve uma correção de bug hoje mais cedo para um problema com a reindexação e contagens de tópicos:

Por acaso, isso também pode ter resolvido o seu problema?

Infelizmente não :frowning: Esta correção já está incluída na minha versão do discourse. Mesmo problema de antes.

Enviando posts para o Algolia
rake abortou!
NoMethodError: método `id’ indefinido para nil:NilClass

id: post.topic.id,
^^
/var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/post_indexer.rb:66:in to_object' /var/www/discourse/plugins/discourse-algolia/lib/discourse_algolia/indexer.rb:23:in block in process!’
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:71:in each' /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:71:in block in find_each’
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:138:in block in find_in_batches' /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:245:in block in in_batches’
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:229:in loop' /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:229:in in_batches’
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:137:in find_in_batches' /var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.1/lib/active_record/relation/batches.rb:70:in find_each’

1 curtida

Eu estava otimista demais esperando que algo fosse ‘magicamente consertado’ :slightly_frowning_face:

Eu tentei novamente no meu site de teste e também encontrei o mesmo problema. No entanto, consegui descobrir mais algumas informações. :partying_face: Aparentemente, ambos estamos enfrentando um problema em que temos pelo menos uma postagem órfã que não possui um ID de tópico, o que está prejudicando a tarefa do rake. O conselho é rastrear e excluí-las, e então a reindexação do rake poderá ser executada sem problemas.

Ainda não coloquei isso em prática para encontrar a(s) postagem(ns) problemática(s), então ainda não tenho um passo a passo, mas pensei em te avisar caso seja algo que você queira explorar antes que eu o faça. :+1:

2 curtidas

Estou depurando isso agora.

Você alterou a configuração do site algolia_discourse_username padrão? Se sim, certifique-se de que você está usando um usuário não administrador.

4 curtidas

Já tentei mais uma vez… :slight_smile: E posso confirmar que remover ‘system’ da configuração de algolia discourse username e executar rake algolia:reindex com um usuário fictício em vez disso funcionou sem erros. :+1:

Vergonhosamente, não reparei na parte das instruções sobre:

Recomenda-se que você crie um usuário fictício separado que só possa ver o conteúdo que você considera público e altere esse valor para o nome de usuário dele.

E só correspondi minhas configurações a esta instrução:

Uma vez que todas as configurações estejam ativadas e preenchidas, a configuração do plugin deve ficar assim:

Pessoalmente, (e posso estar enviesado :slight_smile:) acho que poderíamos talvez tornar essas instruções um pouco mais claras. :slight_smile: Eu defenderia uma seção ‘Crie seu usuário algolia discourse’ como parte do fluxo de configuração.

3 curtidas

Na verdade, no último PR eu removi essa opção, pois ela é possivelmente perigosa. Quando um usuário com acesso de administrador é usado, ela pode mostrar posts restritos na busca.

3 curtidas

Essa é uma ideia ainda melhor. :slight_smile:

3 curtidas

Oi,
obrigado, agora está funcionando :slight_smile: Meus três índices foram criados e enviados para o Algolia!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.