Algolia: initialize non funzionante (rails interrotto - non so come creare il task)

Ciao,

Innanzitutto, questa è una copia del mio post su algolia-discourse ufficiale. Come indicato da Discourse-Support, ora posso postarlo qui, quindi questo è un messaggio copiato.

Vorrei configurare il nostro discourse con algolia, ma non funziona come descritto su GitHub. Ho la versione più recente: 3.1.0.beta1.

Per eseguire la prima inizializzazione, apro il mio discourse-docker con

./launcher enter app

Dopo di che, ho provato diversi comandi (bundle exec rails o solo rails, anche rake), ma tutti i risultati sono:

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 eseguo solo algolia:reindex, ottengo quanto segue:

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)

Qualche idea su quale sia il problema?

Grazie in anticipo!
M.Anderson

L’ho installato sul mio sito di test per provarlo e vedo anche una cosa simile. Vediamo cosa riesco a scoprire. :+1:

2 Mi Piace

Hai impostato per caso l’impostazione del sito algolia_discourse_username?

3 Mi Piace

È impostato su "system"

1 Mi Piace

algolia:initialize non esiste più. Vedi FEATURE: Update to latest algolia gem (#33) · discourse/discourse-algolia@9a1f08f · GitHub

Il README.md necessita di un aggiornamento.

2 Mi Piace

README aggiornato :+1:

2 Mi Piace

Il problema relativo alla reindicizzazione è ancora presente. Ho eseguito un aggiornamento completo di Discourse, incluso Algolia. Inoltre, non ho ancora trovato modifiche al codice all’interno del plugin Algolia. Ci sono piani per lavorare su questo?

Al momento, è stato modificato solo il file readme, ma la funzionalità non funziona ancora come l’avevo scritta inizialmente.

Se necessario, posso inviarvi log recenti dalla console.

Grazie,
M.Anderson

È stata apportata una correzione di bug in precedenza oggi per un problema con la reindicizzazione e i conteggi degli argomenti:

Per scrupolo, questo potrebbe aver risolto anche il tuo problema?

Purtroppo no :frowning: Questa correzione è già presente nella mia versione di discourse. Stesso problema di prima.

Invio di post ad 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 Mi Piace

Speravo in modo troppo ottimistico in una “magica soluzione” :slightly_frowning_face:

Ci ho riprovato sul mio sito di test e ho riscontrato nuovamente lo stesso problema. Tuttavia, sono riuscito a scoprire altre informazioni. :partying_face: A quanto pare, entrambi stiamo riscontrando un problema per cui abbiamo almeno un post orfano a cui manca un topic id, il che sta compromettendo il task rake. Il consiglio è di rintracciare ed eliminare questi post, e poi il reindex rake potrà essere eseguito senza problemi.

Non ho ancora messo in pratica questo metodo per trovare il/i post problematico/i, quindi non ho una guida passo-passo, ma ho pensato di avvisarti nel caso fosse qualcosa che vorresti approfondire prima che ci arrivi io. :+1:

2 Mi Piace

Lo sto eseguendo il debug in questo momento.

Hai modificato l’impostazione del sito predefinita algolia_discourse_username? Se sì, assicurati di utilizzare un utente non amministratore.

4 Mi Piace

Ci ho provato ancora… :slight_smile: E posso confermare che rimuovere ‘system’ dall’impostazione algolia discourse username ed eseguire rake algolia:reindex con un utente fittizio al suo posto ha funzionato senza errori. :+1:

Vergognosamente non ho notato la parte nelle istruzioni riguardo a:

Si consiglia di creare un utente separato fittizio che possa vedere solo i contenuti che si considerano pubblici e di modificare questo valore con il suo nome utente.

E ho abbinato le mie impostazioni solo a questa istruzione:

Una volta attivate e popolate tutte le impostazioni, la configurazione del plugin dovrebbe apparire così:

Personalmente, (e potrei essere di parte :slight_smile:) penso che potremmo rendere quelle istruzioni un po’ più chiare. :slight_smile: Sosterrei una sezione ‘Crea il tuo utente algolia discourse’ come parte del flusso di configurazione.

3 Mi Piace

In realtà, nell’ultimo PR ho rimosso quell’opzione perché è potenzialmente pericolosa. Quando viene utilizzato un utente con accesso amministrativo, può mostrare post con restrizioni nella ricerca.

3 Mi Piace

È un’idea ancora migliore. :slight_smile:

3 Mi Piace

Ciao,
grazie, ora funziona :slight_smile: I miei tre indici sono creati e inviati ad Algolia!

2 Mi Piace

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