Algolia:initialize ne fonctionne pas (rails avorté - ne sait pas comment construire la tâche)

Salut,

Tout d’abord, ceci est une copie de mon message sur le forum officiel algolia-discourse. Comme indiqué par Discourse-Support, je peux maintenant le poster ici, il s’agit donc d’un message copié.

Je souhaite configurer notre discourse avec algolia, mais cela ne fonctionne pas comme décrit sur GitHub. J’ai la dernière version : 3.1.0.beta1.

Pour effectuer la première initialisation, j’ouvre mon discourse-docker avec

./launcher enter app

Après cela, j’ai essayé différentes commandes (bundle exec rails ou seulement rails, aussi rake), mais tous les résultats sont les suivants :

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

Lorsque j’exécute simplement algolia:reindex, j’obtiens ce qui suit :

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)

Une idée de ce qui pourrait causer ce problème ?

Merci d’avance !
M.Anderson

Je l’ai installé sur mon site de test pour l’essayer et je vois également quelque chose de similaire. Laissez-moi voir ce que je peux trouver. :+1:

2 « J'aime »

Avez-vous par hasard défini le paramètre du site algolia_discourse_username ?

3 « J'aime »

Il est défini sur « system »

1 « J'aime »

algolia:initialize n’existe plus. Voir FEATURE: Update to latest algolia gem (#33) · discourse/discourse-algolia@9a1f08f · GitHub

Le README.md doit être mis à jour.

2 « J'aime »

README mis à jour :+1:

2 « J'aime »

Le problème concernant la réindexation existe toujours. J’ai effectué une mise à niveau complète de Discourse, y compris Algolia. De plus, je n’ai pas encore trouvé de modification de code dans le plugin Algolia. Y a-t-il des plans pour travailler sur ce point ?

Pour le moment, seul le fichier README a été modifié, mais la fonction ne fonctionne toujours pas comme je l’avais initialement écrit.

Si nécessaire, je peux vous envoyer des logs récents de la console.

Merci,
M. Anderson

Une correction de bug a été appliquée plus tôt aujourd’hui pour un problème de réindexation et de décompte de sujets :

Au cas où, cela aurait-il pu résoudre votre problème également ?

Malheureusement non :frowning: Ce correctif est déjà inclus dans ma version de discourse. Même problème qu’auparavant.

Envoi des messages à Algolia
rake aborted!
NoMethodError: undefined method `id’ for 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 « J'aime »

J’espérais de manière trop optimiste que ce soit « magiquement résolu » :slightly_frowning_face:

J’ai réessayé sur mon site de test et j’ai rencontré le même problème. Cependant, j’ai réussi à obtenir plus d’informations. :partying_face: Il semble que nous ayons tous les deux un problème avec au moins un message orphelin qui manque d’un identifiant de sujet, ce qui perturbe la tâche rake. Le conseil est de les retrouver et de les supprimer, et ensuite la réindexation rake pourra s’exécuter sans problème.

Je n’ai pas encore mis cela en pratique pour trouver le(s) message(s) problématique(s), donc je n’ai pas d’étapes, mais j’ai pensé vous prévenir au cas où vous voudriez explorer cela avant que je ne le fasse. :+1:

2 « J'aime »

Je suis en train de le déboguer.

Avez-vous modifié le paramètre du site par défaut algolia_discourse_username ? Si oui, veuillez vous assurer que vous utilisez un utilisateur non administrateur.

4 « J'aime »

J’ai retenté une fois de plus… :slight_smile: Et je peux confirmer que la suppression de ‘system’ du paramètre algolia discourse username et l’exécution de rake algolia:reindex avec un utilisateur factice à la place ont fonctionné sans erreur. :+1:

Honteusement, je n’ai pas vu la partie des instructions concernant :

Il est recommandé de créer un utilisateur factice séparé qui ne peut voir que le contenu que vous considérez comme public, et de changer cette valeur pour son nom d’utilisateur.

Et j’ai seulement fait correspondre mes paramètres à cette instruction :

Une fois que tous les paramètres sont activés et renseignés, la configuration du plugin devrait ressembler à ceci :

Personnellement, (et je suis peut-être partial :slight_smile:) je pense que nous pourrions peut-être rendre ces instructions un peu plus claires. :slight_smile: Je préconiserais une section ‘Créer votre utilisateur algolia discourse’ dans le cadre du flux de configuration.

3 « J'aime »

En fait, dans la dernière PR, j’ai supprimé cette option car elle est potentiellement dangereuse. Lorsqu’un utilisateur ayant un accès administrateur est utilisé, cela peut afficher des publications restreintes dans la recherche.

3 « J'aime »

C’est une idée encore meilleure. :slight_smile:

3 « J'aime »

Salut,
Merci, ça marche maintenant :slight_smile: Mes trois index sont créés et envoyés à Algolia !

2 « J'aime »

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