# خطأ NoMethodError عند إعادة بناء إجراءات المستخدم

**URL:** https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507
**Category:** Bug
**Created:** [27 أبريل 2020، 7:30م UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507 "2020-04-27T19:30:13Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [27 أبريل 2020، 7:30م UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/1 "2020-04-27T19:30:13Z")

</div>

مرحبًا بالجميع، لقد قمتُ بتقديم هذا الإصدار في البداية تحت قسم #support، لكنني متأكدٌ إلى حد كبير أنه الآن خطأ (bug) بعد تكراره عدة مرات على تثبيتات جديدة. بدأتُ في مواجهة هذه المشكلة فقط بعد إصدار Discourse الأحدث. إليك خطوات إعادة إنتاج المشكلة:

1. اتبع خطوات تثبيت وإعداد Discourse المعتادة (حصلتُ على نفس الخطأ عند التثبيت على Ubuntu Server 18.04 LTS وكذلك على Ubuntu Server 20.04 LTS).

2. بعد إكمال الإعداد، ادخل إلى الحاوية وشغّل الأمر `rake user_actions:rebuild`، وستحصل على هذا الخطأ:

```plaintext
    # rake user_actions:rebuild --trace
    ** Invoke user_actions:rebuild (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute user_actions:rebuild
    rake aborted!
    NoMethodError: undefined method `log_topic' for UserActionManager:Class
    /var/www/discourse/lib/tasks/user_actions.rake:14:in `block (2 levels) in <top (required)>'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/relation/delegation.rb:85:in `each'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.2.2/lib/active_record/relation/delegation.rb:85:in `each'
    /var/www/discourse/lib/tasks/user_actions.rake:14:in `block in <top (required)>'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `each'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
    /usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:83:in `block in run'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling'
    /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:80:in `run'
    bin/rake:13:in `<top (required)>'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `load'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in `kernel_load'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in `run'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in `exec'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in `dispatch'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in `dispatch'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in `start'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in `start'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:46:in `block in <top (required)>'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in `with_friendly_errors'
    /usr/local/lib/ruby/gems/2.6.0/gems/bundler-2.1.4/exe/bundle:34:in `<top (required)>'
    /usr/local/bin/bundle:23:in `load'
    /usr/local/bin/bundle:23:in `<main>'
    Tasks: TOP => user_actions:rebuild

```

رأيتُ في بعض المنشورات الأخرى أن بعض الأشخاص اقترحوا تشغيل الأمر `./launcher rebuild app` عند ظهور أخطاء مماثلة، ولكن بعد تنفيذ ذلك، ظلت مشكلة NoMethodError قائمة.

أي أفكار أو مقترحات ستكون محل تقدير كبير. شكرًا مقدّمًا!

---

<div class="post-metadata">

### Author: ![Ghan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ghan/32/177964_2.png) [@Ghan](https://meta.discourse.org/u/Ghan)
#### Post date: [28 أبريل 2020، 2:34ص UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/2 "2020-04-28T02:34:19Z")

</div>

أرى أيضًا هذا الخطأ. أنا أعمل على نظام Ubuntu 19.10.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [28 أبريل 2020، 6:29ص UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/3 "2020-04-28T06:29:20Z")

</div>

عذراً، لا ينبغي أن توجد هذه المهمة بعد الآن، فقد كانت معطلة لسنوات عديدة.

لقد قمت بإزالتها.

قد يكون إعادة بناء إجراءات المستخدم ممكنًا، لكنه معقد للغاية، خاصةً عند مراعاة الإضافات مثل “assign” و “solved”.

> <https://github.com/discourse/discourse/commit/6b62d75c50148c8d7fec044adcf3a3ff099b3501>
>
> rebuilding user\_actions is not something that should be done.
> 
> Plugins such as s…olved and assigned extend it, there are tons of
> little rules that were not captured in \`user\_actions:rebuild\`

---

<div class="post-metadata">

### Author: ![007](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/007/32/175794_2.png) [@007](https://meta.discourse.org/u/007)
#### Post date: [28 أبريل 2020، 10:21ص UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/4 "2020-04-28T10:21:06Z")

</div>

شكرًا لك على المعلومة، @sam. لم أكن أدرك ذلك. للمعلومة، المهمة عملت قبل بضعة أيام فقط (في حالي على الأقل) دون أي مشاكل. بعد الاستيراد، تمكنت من تشغيلها بنجاح وأعاد بناء إجراءات المستخدمين كما هو متوقع.

بدلاً من تشغيل هذه المهمة، هل توجد طريقة مفضلة لإعادة بناء هذه البيانات (أو مكان لتخزينها مبدئيًا أثناء الاستيراد) لكي تُستخدم البيانات بشكل صحيح من قبل Discourse؟

على سبيل المثال، تمكنت من جلب جميع المنشورات السابقة لـ Discourse مثل السجل التاريخي ورسم خرائطها بشكل صحيح إلى جميع الحقول في جدول user\_action. يبدو أن الجزء المهم في تحقيق ذلك هو تشغيل أمر rake المذكور أعلاه، لأنه أظهر بعد ذلك سجل إعجابات دقيق لكل مستخدم (الأكثر إعجابًا، الإعجابات الممنوحة، المستلمة، إلخ). إذا سيتم إزالة أمر rake المذكور أعلاه، هل تمانع في توجيهي إلى الاتجاه الصحيح لمكان آخر في قاعدة البيانات حيث يجب تخزين إجراءات المستخدمين لتظهر بشكل صحيح في الملفات الشخصية وإحصائيات المستخدمين؟ هل يتم ضغطها وحفظها فقط في جدول user\_stats كأرقام صحيحة أم أن هناك مكانًا آخر تذهب إليه بعض هذه البيانات؟

شكرًا لك!

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [28 أبريل 2020، 11:49ص UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/5 "2020-04-28T11:49:05Z")

</div>

يوفر مستوردونا بشكل عام إطارًا للقيام بذلك أثناء عمليات الهجرة. يُرجى مراجعة المصدر الخاص بهم.

[discourse/script/import\_scripts at main · discourse/discourse · GitHub](https://github.com/discourse/discourse/tree/master/script/import_scripts)

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [2 مايو 2020، 8:00ص UTC](https://meta.discourse.org/t/nomethoderror-when-rebuilding-user-actions/149507/6 "2020-05-02T08:00:01Z")

</div>

تم إغلاق هذا الموضوع تلقائيًا بعد 4 أيام. لم يعد السماح بردود جديدة.
