Algolia: التهيئة لا تعمل (تعطلت Rails - لا أعرف كيفية بناء المهمة)

مرحباً،

أولاً وقبل كل شيء، هذه نسخة من مشاركتي في منتديات Algolia الرسمية. كما أخبرني فريق دعم Discourse، يمكنني الآن نشرها هنا، لذلك هذه رسالة منسوخة.

أود إعداد منتديات Discourse الخاصة بنا باستخدام Algolia، ولكنها لا تعمل كما هو موضح في GitHub. لدي أحدث إصدار: 3.1.0.beta1.

لإجراء التهيئة الأولى، أقوم بتشغيل حاوية Discourse الخاصة بي باستخدام

./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)

أي فكرة عن سبب المشكلة؟

شكراً مقدماً!
م. أندرسون

لقد قمت بتثبيت هذا على موقع الاختبار الخاص بي لتجربته وأرى شيئًا مشابهًا أيضًا. دعني أرى ما يمكنني اكتشافه. :+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)

لا تزال المشكلة المتعلقة بإعادة الفهرسة قائمة. لقد قمت بترقية كاملة لـ discourse، بما في ذلك algolia. أيضًا، لم أتمكن بعد من العثور على تغيير في الكود داخل المكون الإضافي لـ algolia. هل هناك أي خطط للعمل على هذا؟

في الوقت الحالي، تم تغيير ملف القراءة فقط، لكن الوظيفة لا تزال لا تعمل كما كتبتها في البداية.

إذا لزم الأمر، يمكنني إرسال سجلات جديدة من وحدة التحكم.

شكرًا،
م. أندرسون

تم إصلاح خطأ سابق اليوم يتعلق بإعادة الفهرسة وعدد المواضيع:

على سبيل الصدفة، هل يمكن أن يكون هذا قد حل مشكلتك أيضًا؟

للأسف لا :frowning: هذا الإصلاح موجود بالفعل داخل إصدار discourse الخاص بي. نفس المشكلة كما في السابق.

دفع المشاركات إلى 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: يبدو أننا كلانا نواجه مشكلة حيث لدينا على الأقل منشور يتيم يفتقر إلى معرف الموضوع، مما يعطل مهمة “rake”. النصيحة هي تعقب هذه المنشورات وحذفها، وبعد ذلك يمكن لمهمة إعادة الفهرسة “rake” أن تعمل بسلاسة.

لم أطبق هذا بعد للعثور على المنشور (المنشورات) التي بها المشكلة، لذا لم أضع خطوات مفصلة، لكنني أردت تنبيهك في حال كان هذا شيئًا ترغب في استكشافه قبل أن أصل إليه. :+1:

إعجابَين (2)

أنا أقوم بتصحيحه الآن.

هل قمت بتغيير إعداد الموقع الافتراضي algolia_discourse_username؟ إذا كان الأمر كذلك، فيرجى التأكد من أنك تستخدم مستخدمًا غير مسؤول.

4 إعجابات

لقد حاولت مرة أخرى… :slight_smile: وأؤكد أن إزالة ‘system’ من إعداد algolia discourse username وتشغيل rake algolia:reindex باستخدام مستخدم وهمي بدلاً منه قد نجح دون أخطاء. :+1:

بكل خجل لم ألاحظ الجزء الموجود في التعليمات حول:

يوصى بإنشاء مستخدم وهمي منفصل يمكنه فقط رؤية المحتوى الذي تعتبره عامًا، وتغيير هذه القيمة إلى اسم المستخدم الخاص به.

وطابقت إعداداتي فقط وفقًا لهذه التعليمات:

بمجرد تشغيل جميع الإعدادات وتعبئتها، يجب أن تبدو تهيئة المكون الإضافي كما يلي:

شخصيًا، (وقد أكون متحيزًا :slight_smile:) أعتقد أنه يمكننا جعل هذه التعليمات أوضح قليلاً. :slight_smile: سأدعو إلى قسم “إنشاء مستخدم Algolia Discourse الخاص بك” كجزء من تدفق التهيئة.

3 إعجابات

في الواقع، في آخر طلب سحب (PR) قمت بإزالة هذا الخيار لأنه قد يكون خطيرًا. عند استخدام مستخدم لديه صلاحيات المسؤول، يمكن أن يعرض منشورات مقيدة في البحث.

3 إعجابات

هذه فكرة أفضل. :slight_smile:

3 إعجابات

مرحباً،
شكراً لك، لقد تم الأمر الآن :slight_smile: تم إنشاء الفهارس الثلاثة الخاصة بي وإرسالها إلى Algolia!

إعجابَين (2)

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