Algolia: initialize no funciona (rails abortado - no sé cómo construir la tarea)

Hola,

Antes que nada, esta es una copia de mi publicación en el foro oficial de algolia-discourse. Como me indicó Discourse-Support, ahora puedo publicarla aquí, por lo tanto, este es un mensaje copiado.

Me gustaría configurar nuestro Discourse con Algolia, pero no está funcionando como se describe en GitHub. Tengo la versión más reciente: 3.1.0.beta1.

Para realizar la inicialización, abro mi discourse-docker con

./launcher enter app

Después de eso, probé diferentes comandos (bundle exec rails o solo rails, también rake), pero todos resultan en:

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

Cuando ejecuto solo algolia:reindex, obtengo lo siguiente:

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)

¿Alguna idea de cuál podría ser el problema?

¡Gracias de antemano!
M.Anderson

Lo he instalado en mi sitio de prueba para probarlo y también veo algo similar. Déjame ver qué puedo averiguar. :+1:

2 Me gusta

¿Has establecido la configuración del sitio algolia_discourse_username por casualidad?

3 Me gusta

Está configurado en “system”

1 me gusta

algolia:initialize ya no existe. Consulte FEATURE: Update to latest algolia gem (#33) · discourse/discourse-algolia@9a1f08f · GitHub

Es necesario actualizar el README.md.

2 Me gusta

README actualizado :+1:

2 Me gusta

El problema con la reindexación todavía existe. Realicé una actualización completa de Discourse, incluyendo Algolia. Además, todavía no he encontrado ningún cambio de código dentro del plugin de Algolia. ¿Hay algún plan para trabajar en esto?

En este momento, solo se ha cambiado el readme, pero la función todavía no funciona como la escribí inicialmente.

Si es necesario, puedo enviarle registros recientes de la consola.

Gracias,
M.Anderson

Hubo una corrección de errores hoy temprano para un problema con la reindexación y los recuentos de temas:

Por si acaso, ¿podría esto haber resuelto también tu problema?

Desafortunadamente no :frowning: Esta corrección ya está incluida en mi versión de discourse. Mismo problema que antes.

Pushing posts to 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 me gusta

Esperaba de forma demasiado optimista que se hubiera ‘arreglado mágicamente’ :slightly_frowning_face:

Lo he intentado de nuevo en mi sitio de prueba y también me he encontrado con el mismo problema. Sin embargo, he conseguido averiguar más información. :partying_face: Al parecer, ambos estamos experimentando un problema en el que tenemos al menos una publicación huérfana que carece de un ID de tema, lo que está afectando a la tarea rake. El consejo es localizarlas y eliminarlas, y entonces la reindexación de rake podrá ejecutarse sin problemas.

Aún no he puesto esto en práctica para encontrar la(s) publicación(es) problemática(s), así que no tengo un paso a paso, pero pensé en avisarte en caso de que quieras explorar esto antes de que yo lo haga. :+1:

2 Me gusta

Lo estoy depurando ahora mismo.

¿Cambiaste la configuración del sitio algolia_discourse_username por defecto? Si es así, asegúrate de que estás utilizando un usuario que no sea administrador.

4 Me gusta

Lo he intentado de nuevo… :slight_smile: Y puedo confirmar que quitar ‘system’ de la configuración de algolia discourse username y ejecutar rake algolia:reindex con un usuario ficticio en su lugar funcionó sin errores. :+1:

Vergonzosamente no me fijé en la parte de las instrucciones sobre:

Se recomienda que crees un usuario separado y ficticio que solo pueda ver el contenido que consideres público, y cambies este valor a su nombre de usuario.

Y solo igualé mi configuración según esta instrucción:

Una vez que todas las configuraciones estén activadas y pobladas, la configuración del plugin debería verse así:

Personalmente, (y puedo estar sesgado :slight_smile:) creo que podríamos hacer esas instrucciones un poco más claras. :slight_smile: Abogaría por una sección ‘Crea tu usuario de Discourse de Algolia’ como parte del flujo de configuración.

3 Me gusta

En realidad, en el último PR eliminé esa opción ya que es posiblemente peligrosa. Cuando se utiliza un usuario con acceso de administrador, puede mostrar publicaciones restringidas en la búsqueda.

3 Me gusta

Esa es una idea aún mejor. :slight_smile:

3 Me gusta

Hola,
¡gracias, ahora funciona! ¡Mis tres índices se crearon y se enviaron a Algolia!

2 Me gusta

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