Algolia:初期化が機能しない(railsが中断されました - タスクの構築方法がわかりません)

こんにちは、

まず、これは公式の algolia-discourse への投稿のコピーです。Discourse-Support から、ここに投稿できると伝えられたため、これはコピーメッセージです。

Discourse を Algolia で設定したいのですが、GitHub に記載されているように機能しません。最新バージョンは 3.1.0.beta1 です。

最初の初期化を行うために、discourse-docker を次のように開きます。

./launcher enter app

その後、さまざまなコマンド(bundle exec rails または単に rails、rake も)を試しましたが、すべて次のような結果になります。

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

algolia:reindex だけを実行すると、次のようになります。

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)

何か原因が考えられますか?

よろしくお願いいたします。
M.Anderson

テストサイトにこれをインストールして試してみましたが、同様の現象も確認できました。調べてみますね。:+1:

「いいね!」 2

algolia_discourse_username のサイト設定は設定されましたか?

「いいね!」 3

「システム」に設定されています

「いいね!」 1

algolia:initialize はもう存在しません。FEATURE: Update to latest algolia gem (#33) · discourse/discourse-algolia@9a1f08f · GitHub を参照してください。

README.md を更新する必要があります。

「いいね!」 2

README 更新されました :+1:

「いいね!」 2

再インデックスに関する問題は依然として存在します。Algoliaを含め、Discourseの完全なアップグレードを行いました。また、Algoliaプラグイン内にコードの変更は見つかりませんでした。これに取り組む計画はありますか?

現在、READMEのみが変更されていますが、私が最初に記述したように機能はまだ動作していません。

必要であれば、コンソールから最新のログをお送りできます。

よろしくお願いいたします。
M.Anderson

本日、インデックス再作成とトピック数に関する問題のバグ修正が行われました。

念のため、この修正であなたの問題も解決した可能性はありますか?

残念ながら解決しませんでした:-( この修正はすでに私の discourse-version に含まれています。以前と同じ問題です。

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

「魔法のように修正された」ことを楽観的に期待していました :slightly_frowning_face:

テストサイトで再度試しましたが、やはり同じ問題が発生しました。しかし、さらに詳しい情報を得ることができました :partying_face: どうやら、私たち両方が、トピックIDを持たない孤立した投稿を少なくとも1つ抱えており、それがrakeタスクを妨げているようです。この問題の投稿を見つけて削除し、その後rake reindexを実行すればスムーズに進むとのことです。

まだ問題の投稿を見つけるためにこれを実行していませんが、手順はありません。しかし、私が取り掛かる前にあなたがこれを調査したいかもしれないと思い、一応お知らせしておきます :+1:

「いいね!」 2

現在デバッグ中です。

algolia_discourse_username のサイト設定を変更しましたか?もしそうであれば、管理者以外のユーザーを使用していることを確認してください。

「いいね!」 4

もう一度試してみました… :slight_smile: そして、algolia discourse username 設定から「system」を削除し、代わりにダミーユーザーで rake algolia:reindex を実行したところ、エラーなく動作したことを確認しました。:+1:

恥ずかしながら、指示の中にあった以下の部分を見落としていました。

公開するとみなすコンテンツのみを表示できるダミーの別ユーザーを作成し、この値をそのユーザー名に変更することが推奨されます。

そして、以下の指示に従って設定を一致させていました。

すべての設定がオンになり、入力されたら、プラグインの設定は次のようになります。

個人的には(そして私の意見は偏っているかもしれませんが :slight_smile:)、これらの指示をもう少し明確にできるのではないかと思います。:slight_smile: 設定フローの一部として、「Algolia Discourseユーザーの作成」セクションを設けることを提唱します。

「いいね!」 3

実際、最新のプルリクエストで、そのオプションは危険である可能性があるため削除しました。管理者権限を持つユーザーが使用されると、検索で制限された投稿が表示される可能性があります。

「いいね!」 3

それはさらに良い考えですね。 :slight_smile:

「いいね!」 3

こんにちは、
ありがとうございます。これで動作しました :slight_smile: 3つのインデックスが作成され、Algolia に送信されました!

「いいね!」 2

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