كيف يمكنني الحصول على معلومات الإصدار الحالي من النسخة الاحتياطية الخاصة بي؟

كما هو مذكور في العنوان، تم هجوم على VPS الخاص بي. حاولت الحصول على معلومات نسخة الديسكورس الحالية من خلال تشغيل ./discourse-doctor، لكنه فشل.

لحسن الحظ، لقد قمت بتنزيل نسخة احتياطية إلى جهازي المحلي.
كيف يمكنني استرداد معلومات النسخة الحالية من هذا النسخ الاحتياطي؟
شكرًا لك.

إعجابَين (2)

ما المشكلة التي تحاول حلها؟ يمكنك استعادة النسخ الاحتياطي إلى أي إصدار أحدث.

4 إعجابات

أنا أخطط لإعادة تثبيت نظام التشغيل ثم إعداد الإصدار السابق من Discourse لتجنب أي مشكلات توافق مع الإضافات.

وبالمناسبة، إذا تم اختراق VPS، هل لا يزال من الممكن عمل نسخة احتياطية من Discourse؟ لدي نسخة احتياطية تلقائية فقط من قبل بضعة أيام.

[اقتباس=“Alienazk، المشاركة: 3، الموضوع: 367077”]
إذا تم اختراق VPS، هل لا يزال من الممكن نسخ احتياطي لمنتدى النقاش؟
[/اقتباس]

يعتمد ذلك على الحالة التي تركها فيها المخترقون. يمكنك محاولة المرور عبر وحدة تحكم Rails:

cd /var/discourse 
./launcher enter app
discourse backup
cd public/backups/default
scp * user@destination.example.com:

اسم ملف النسخة الاحتياطية الخاص بك يتبع النموذج forumname-2025-05-22-151843-v20250521053324.tar.gz

السلسلة الطويلة في النهاية هي أ制 أخر ترحيل تم تشغيله.

للتعرف على الارتباط بالتحديث المُحدد لها،

cd /var/www/discourse
git blame db/migrate/20250521053324*

سترى الآن بعض المخرجات والعمود الأيسر يحتوي على رمز الالتزام.
هذا هو الحد الأدنى للالتزام الذي يجب أن يكون عليه منتداك الجديد.

(أحيانًا ينتمي الالتزام إلى إضافة، في هذه الحالة استخدم locate للعثور على الإضافة، ودخل إلى دليلها وافعل نفس جملة git blame)

8 إعجابات

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

إعجاب واحد (1)

هل هذا يعني أنني لن أتمكن من إجراء نسخة احتياطية؟

يعتقد أن نسخ احتياطية أخرى قيد التشغيل. قد تحاول إعادة تشغيل الحاوية ثم المحاولة مرة أخرى.

شكرا لنصيحتك.
تمكنت من بدء النسخ الاحتياطي بنجاح.
ومع ذلك، توقفت العملية عند هذه النقطة لمدة 20 دقيقة تقريبًا (انظر لقطة الشاشة أدناه). هل هذا طبيعي؟

نعم، يمكن أن يصبح هذا الجدول كبيرًا جدًا بسبب خطأ، انظر Clean up user_auth_token_logs?

إذا أصبح هذا مشكلة، يمكنك إيقاف النسخ الاحتياطي، والدخول إلى وحدة تحكم rails

rails c
UserAuthTokenLog.delete_all

ثم إعادة تشغيل النسخ الاحتياطي.

3 إعجابات

شكرًا لمقترحك. لقد قمت بنجاح بأخذ نسخة احتياطية من البيانات الأخيرة.
بالإضافة إلى ذلك، بما أن نظام التشغيل قد تم إعادة تثبيته بالفعل، كيف يمكنني استعادة الحالة الأخيرة مباشرة باستخدام ملف app.yml وملفات النسخ الاحتياطي؟ هل هناك أي وثائق رسمية لذلك؟ أم أنني بحاجة إلى اتباع عملية تثبيت Docker التقليدية أولاً، ثم استيراد النسخة الاحتياطية لاستعادة كل شيء؟

على أية حال، عندما حاولت معرفة المقطع الذي يتوافق معه نسخ احتياطي Discourse الخاص بي، حصلت على المخرجات التالية. هل لديك فكرة عن سبب ذلك؟

/var/www/discourse# git blame db/migrate/20240516145911*
fatal: no such path 'db/migrate/20240516145911*' in HEAD

[اقتباس=“Alienazk، المنشور:10، الموضوع:367077”]
أم هل أحتاج إلى المرور عبر عملية تثبيت Docker القياسية أولاً، ثم استيراد النسخة الاحتياطية لاستعادة كل شيء؟
[/اقتباس]

هذا!

[اقتباس=“Alienazk، المنشور:10، الموضوع:367077”]
بالمناسبة، عندما حاولت معرفة أي التزام يتطابق معه نسخة احتياطية لـ Discourse الخاصة بي، حصلت على المخرجات التالية. هل لديك فكرة عن السبب؟
[/اقتباس]

[اقتباس=“RGJ، المنشور:4، الموضوع:367077”]
(أحيانًا ينتمي الالتزام إلى مكون إضافي، في هذه الحالة استخدم locate للعثور على المكون الإضافي، وانتقل إلى مجلدها وقم بنفس خطوات git blame)
[/اقتباس]

مُفَجَّرة: فهي تتبع المكون الإضافي للمحادثة.

root@testbeta:/var/www/discourse# locate 202405161459
/var/www/discourse/plugins/chat/db/migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@testbeta:/var/www/discourse# cd plugins/chat/
root@testbeta:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*
إعجاب واحد (1)

شكرًا جزيلاً لك!
لست متأكدًا تمامًا :التفكير: هل تنشئ هذه الطريقة التزامًا في مستودع Discourse نفسه، بدلاً من إضافة إلى مكون الدردشة؟ إذا كان الأمر كذلك، هل يمكنك شرح الآلية وراء ذلك؟

يبدو أنه يمكنني اتباع هذا الدليل؟
https://meta.discourse.org/t/restore-a-backup-from-the-command-line/

إعجابَين (2)

[اقتباس=“Alienazk, post:10, topic:367077”]
20240516145911
[/اقتباس]

لقد جربت الطريقة التي أوصيت بها، لكنني واجهت المشكلة التالية.
هل تمانع في إلقاء نظرة وإخباري بما قد يكون حدث خطأ؟

/var/www/discourse# locate 20240516145911
/shared/backups/default/discourse-2025-05-24-113557-v20240516145911.tar.gz
/var/www/discourse/plugins/chat/db/post_migrate/20240516145911_update_user_options_for_thread_title_prompts.rb
root@tartali-app:/var/www/discourse# cd plugins/chat/
root@tartali-app:/var/www/discourse/plugins/chat# git blame db/migrate/20240516145911*
fatal: no such path 'plugins/chat/db/migrate/20240516145911*' in HEAD```

عذرًا. حصلت عليه عن طريق git blame db/post_migrate/20240516145911*هذا هو الناتج:

root@tartali-app:/var/www/discourse/plugins/chat# git blame db/post_migrate/20240516145911*
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.42 KiB | 14.20 MiB/s, done.
Resolving deltas: 100% (2/2), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 21.91 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.90 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.82 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
Receiving objects: 100% (2571/2571), 1007.81 KiB | 22.40 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2571/2571), 1007.76 KiB | 22.39 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2166 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (413/413), done.
remote: Compressing objects: 100% (413/413), done.
Receiving objects: 100% (2571/2571), 1007.78 KiB | 23.44 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2571 (delta 3), reused 0 (delta 0), pack-reused 2158 (from 1)
remote: Enumerating objects: 2571, done.
remote: Counting objects: 100% (422/422), done.
remote: Compressing objects: 100% (421/421), done.
remote: Total 2571 (delta 2), reused 1 (delta 1), pack-reused 2149 (from 1)
Receiving objects: 100% (2571/2571), 1008.39 KiB | 22.92 MiB/s, done..
جارٍ حل الفروق: 100% (2/2)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (422/422)، تم.
عن بعد: ضغط الكائنات: 100% (421/421)، تم.
عن بعد: الإجمالي 2571 (دلتا 2)، مُعاد استخدامه 1 (دلتا 1)، مُعاد تجميعه 2149 (من 1)
استلام الكائنات: 100% (2571/2571)، 1008.39 كيلوبايت | 22.41 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (404/404)، تم.
عن بعد: ضغط الكائنات: 100% (404/404)، تم.
عن بعد: الإجمالي 2571 (دلتا 3)، مُعاد استخدامه 0 (دلتا 0)، مُعاد تجميعه 2167 (من 1)
استلام الكائنات: 100% (2571/2571)، 1007.74 كيلوبايت | 21.91 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (422/422)، تم.
عن بعد: ضغط الكائنات: 100% (421/421)، تم.
عن بعد: الإجمالي 2571 (دلتا 2)، مُعاد استخدامه 1 (دلتا 1)، مُعاد تجميعه 2149 (من 1)
استلام الكائنات: 100% (2571/2571)، 1008.40 كيلوبايت | 22.92 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (422/422)، تم.
عن بعد: ضغط الكائنات: 100% (421/421)، تم.
عن بعد: الإجمالي 2571 (دلتا 2)، مُعاد استخدامه 1 (دلتا 1)، مُعاد تجميعه 2149 (من 1)
استلام الكائنات: 100% (2571/2571)، 1008.39 كيلوبايت | 22.41 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (414/414)، تم.
عن بعد: ضغط الكائنات: 100% (414/414)، تم.
استلام الكائنات: 100% (2571/2571)، 1007.78 كيلوبايت | 22.90 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
عن بعد: الإجمالي 2571 (دلتا 3)، مُعاد استخدامه 0 (دلتا 0)، مُعاد تجميعه 2157 (من 1)
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (403/403)، تم.
عن بعد: ضغط الكائنات: 100% (403/403)، تم.
عن بعد: الإجمالي 2571 (دلتا 3)، مُعاد استخدامه 0 (دلتا 0)، مُعاد تجميعه 2168 (من 1)
استلام الكائنات: 100% (2571/2571)، 1007.66 كيلوبايت | 22.39 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (413/413)، تم.
عن بعد: ضغط الكائنات: 100% (413/413)، تم.
عن بعد: الإجمالي 2571 (دلتا 3)، مُعاد استخدامه 0 (دلتا 0)، مُعاد تجميعه 2158 (من 1)
استلام الكائنات: 100% (2571/2571)، 1007.70 كيلوبايت | 12.44 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (412/412)، تم.
عن بعد: ضغط الكائنات: 100% (412/412)، تم.
عن بعد: الإجمالي 2571 (دلتا 3)، مُعاد استخدامه 0 (دلتا 0)، مُعاد تجميعه 2159 (من 1)
استلام الكائنات: 100% (2571/2571)، 1007.71 كيلوبايت | 22.39 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100% (419/419)، تم.
عن بعد: ضغط الكائنات: 100% (418/418)، تم.
عن بعد: الإجمالي 2571 (دلتا 2)، مُعاد استخدامه 1 (دلتا 1)، مُعاد تجميعه 2152 (من 1)
استلام الكائنات: 100% (2571/2571)، 1008.31 كيلوبايت | 21.92 ميجابايت/ث، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
عن بعد: تعداد الكائنات: 2571، تم.
عن بعد: عد الكائنات: 100٪ (404/404) ، تم.
عن بعد: ضغط الكائنات: 100٪ (404/404) ، تم.
عن بعد: الإجمالي 2571 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تعبئة 2167 (من 1)
استلام الكائنات: 100٪ (2571/2571) ، 1007.66 كيلو بايت | 22.90 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (3/3) ، تم.
عن بعد: تعداد الكائنات: 2571 ، تم.
عن بعد: عد الكائنات: 100٪ (414/414) ، تم.
عن بعد: ضغط الكائنات: 100٪ (414/414) ، تم.
عن بعد: الإجمالي 2571 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تعبئة 2157 (من 1)
استلام الكائنات: 100٪ (2571/2571) ، 1007.70 كيلو بايت | 12.00 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (3/3) ، تم.
عن بعد: تعداد الكائنات: 2571 ، تم.
عن بعد: عد الكائنات: 100٪ (412/412) ، تم.
عن بعد: ضغط الكائنات: 100٪ (412/412) ، تم.
عن بعد: الإجمالي 2571 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تعبئة 2159 (من 1)
استلام الكائنات: 100٪ (2571/2571) ، 1007.70 كيلو بايت | 22.39 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (3/3) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (416/416) ، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416) ، تم.
استلام الكائنات: 100٪ (2569/2569) ، 1006.98 كيلو بايت | 22.89 ميجابايت / ثانية ، تم.
عن بعد: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تعبئة 2153 (من 1)
حل الدلتا: 100٪ (3/3) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (418/418) ، تم.
عن بعد: ضغط الكائنات: 100٪ (417/417) ، تم.
استلام الكائنات: 100٪ (2569/2569) ، 1007.58 كيلو بايت | 22.90 ميجابايت / ثانية ، تم.
عن بعد: الإجمالي 2569 (دلتا 2) ، وإعادة استخدام 1 (دلتا 1) ، وإعادة تعبئة 2151 (من 1)
حل الدلتا: 100٪ (2/2) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (405/405) ، تم.
عن بعد: ضغط الكائنات: 100٪ (405/405) ، تم.
عن بعد: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تعبئة 2164 (من 1)
استلام الكائنات: 100٪ (2569/2569) ، 1006.90 كيلو بايت | 22.88 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (3/3) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (417/417) ، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416) ، تم.
عن بعد: الإجمالي 2569 (دلتا 2) ، وإعادة استخدام 1 (دلتا 1) ، وإعادة تعبئة 2152 (من 1)
استلام الكائنات: 100٪ (2569/2569) ، 1007.75 كيلو بايت | 20.57 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (2/2) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (417/417) ، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416) ، تم.
عن بعد: الإجمالي 2569 (دلتا 2) ، وإعادة استخدام 1 (دلتا 1) ، وإعادة تعبئة 2152 (من 1)
استلام الكائنات: 100٪ (2569/2569) ، 1007.74 كيلو بايت | 23.44 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (2/2) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (417/417) ، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416) ، تم.
عن بعد: الإجمالي 2569 (دلتا 2) ، وإعادة استخدام 1 (دلتا 1) ، وإعادة تعبئة 2152 (من 1)
استلام الكائنات: 100٪ (2569/2569) ، 1007.55 كيلو بايت | 23.43 ميجابايت / ثانية ، تم.
حل الدلتا: 100٪ (2/2) ، تم.
عن بعد: تعداد الكائنات: 2569 ، تم.
عن بعد: عد الكائنات: 100٪ (417/417) ، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416) ، تم.
remote: الإجمالي 2569 (دلتا 2)، معاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2152 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1007.56 كيلوبايت | 23.43 ميجابايت/ث، تم.
حل الدلتا: 100٪ (2/2)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (418/418)، تم.
remote: ضغط الكائنات: 100٪ (417/417)، تم.
remote: الإجمالي 2569 (دلتا 2)، معاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2151 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1007.56 كيلوبايت | 10.72 ميجابايت/ث، تم.
حل الدلتا: 100٪ (2/2)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (405/405)، تم.
remote: ضغط الكائنات: 100٪ (405/405)، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2164 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1006.91 كيلوبايت | 22.38 ميجابايت/ث، تم.
حل الدلتا: 100٪ (3/3)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (404/404)، تم.
remote: ضغط الكائنات: 100٪ (404/404)، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2165 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1006.90 كيلوبايت | 22.38 ميجابايت/ث، تم.
حل الدلتا: 100٪ (3/3)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (404/404)، تم.
remote: ضغط الكائنات: 100٪ (404/404)، تم.
استلام الكائنات: 100٪ (2569/2569)، 1006.88 كيلوبايت | 22.88 ميجابايت/ث، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2165 (من 1)
حل الدلتا: 100٪ (3/3)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (416/416)، تم.
remote: ضغط الكائنات: 100٪ (416/416)، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2153 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1006.89 كيلوبايت | 5.47 ميجابايت/ث، تم.
حل الدلتا: 100٪ (3/3)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (415/415)، تم.
remote: ضغط الكائنات: 100٪ (415/415)، تم.
استلام الكائنات: 100٪ (2569/2569)، 1006.89 كيلوبايت | 22.88 ميجابايت/ث، تم.
حل الدلتا: 100٪ (3/3)، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2154 (من 1)
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (415/415)، تم.
remote: ضغط الكائنات: 100٪ (415/415)، تم.
استلام الكائنات: 100٪ (2569/2569)، 1006.89 كيلوبايت | 21.42 ميجابايت/ث، تم.
حل الدلتا: 100٪ (3/3)، تم.
remote: الإجمالي 2569 (دلتا 3)، معاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2154 (من 1)
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (416/416)، تم.
remote: ضغط الكائنات: 100٪ (415/415)، تم.
remote: الإجمالي 2569 (دلتا 2)، معاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2153 (من 1)
استلام الكائنات: 100٪ (2569/2569)، 1007.50 كيلوبايت | 23.43 ميجابايت/ث، تم.
حل الدلتا: 100٪ (2/2)، تم.
remote: تعداد الكائنات: 2569، تم.
remote: عد الكائنات: 100٪ (405/405)، تم.
remote: ضغط الكائنات: 100٪ (405/405)، تم.remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.63 KiB | 13.98 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.63 KiB | 19.36 MiB/s, done.
Resolving deltas: 100% (3/3), done.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.29 KiB | 15.50 MiB/s, done.
Resolving deltas: 100% (2/2), done.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.63 KiB | 16.50 MiB/s, done.
Resolving deltas: 100% (3/3), done.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
Receiving objects: 100% (2569/2569), 1006.63 KiB | 22.37 MiB/s, done.
Resolving deltas: 100% (3/3), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (417/417), done.
remote: Compressing objects: 100% (416/416), done.
remote: Total 2569 (delta 2), reused 1 (delta 1), pack-reused 2152 (from 1)
Receiving objects: 100% (2569/2569), 1007.29 KiB | 22.89 MiB/s, done.
Resolving deltas: 100% (2/2), done.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (405/405), done.
remote: Compressing objects: 100% (405/405), done.
remote: Total 2569 (delta 3), reused 0 (delta 0), pack-reused 2164 (from 1)
Receiving objects: 100% (2569/2569), 1006.63 KiB | 21.42 MiB/s, done.
Resolving deltas: 100% (3/3), done.
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
remote: Enumerating objects: 2569, done.
remote: Counting objects: 100% (416/416), done.
remote: Compressing objects: 100% (416/416), done.
Receiving objects: 100% (2569/2569), 1006.67 KiB | 20.13 MiB/s, done..
جارٍ حل الفروق: 100% (3/3)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 3)، المعاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2153 (من 1)
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (417/417)، تم.
الخادم البعيد: ضغط الكائنات: 100% (416/416)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 2)، المعاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2152 (من 1)
استلام الكائنات: 100% (2569/2569)، 1007.29 كيلوبايت | 21.43 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (416/416)، تم.
الخادم البعيد: ضغط الكائنات: 100% (416/416)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 3)، المعاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2153 (من 1)
استلام الكائنات: 100% (2569/2569)، 1006.68 كيلوبايت | 21.88 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (415/415)، تم.
الخادم البعيد: ضغط الكائنات: 100% (414/414)، تم.
استلام الكائنات: 100% (2569/2569)، 1007.28 كيلوبايت | 23.42 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 2)، المعاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2154 (من 1)
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (415/415)، تم.
الخادم البعيد: ضغط الكائنات: 100% (415/415)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 3)، المعاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2154 (من 1)
استلام الكائنات: 100% (2569/2569)، 1006.68 كيلوبايت | 17.98 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (417/417)، تم.
الخادم البعيد: ضغط الكائنات: 100% (416/416)، تم.
استلام الكائنات: 100% (2569/2569)، 1007.29 كيلوبايت | 22.89 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (2/2)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 2)، المعاد استخدامه 1 (دلتا 1)، إعادة استخدام الحزمة 2152 (من 1)
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (404/404)، تم.
الخادم البعيد: ضغط الكائنات: 100% (404/404)، تم.
الخادم البعيد: الإجمالي 2569 (دلتا 3)، المعاد استخدامه 0 (دلتا 0)، إعادة استخدام الحزمة 2165 (من 1)
استلام الكائنات: 100% (2569/2569)، 1006.63 كيلوبايت | 20.54 ميجابايت/ثانية، تم.
جارٍ حل الفروق: 100% (3/3)، تم.
جارٍ تجميع المستودع تلقائيًا في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للحصول على التدبير المنزلي اليدوي.
الخادم البعيد: تعداد الكائنات: 2569، تم.
الخادم البعيد: عد الكائنات: 100% (416/416)، تم.
الخادم البعيد: ضغط الكائنات: 100% (416/416)، تم..
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2153 (من 1)
استقبال الكائنات: 100٪ (2569/2569)، 1006.68 كيلو بايت | 22.88 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (404/404)، تم.
عن بعد: ضغط الكائنات: 100٪ (404/404)، تم.
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2165 (من 1)
استقبال الكائنات: 100٪ (2569/2569)، 1006.63 كيلو بايت | 19.74 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (415/415)، تم.
عن بعد: ضغط الكائنات: 100٪ (415/415)، تم.
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2154 (من 1)
استقبال الكائنات: 100٪ (2569/2569)، 1006.68 كيلو بايت | 14.18 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (416/416)، تم.
عن بعد: ضغط الكائنات: 100٪ (415/415)، تم.
استقبال الكائنات: 100٪ (2569/2569)، 1007.14 كيلو بايت | 22.89 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (2/2)، تم.
عن بعد: المجموع 2569 (دلتا 2)، أعيد استخدام 1 (دلتا 1)، أعيد تجميع 2153 (من 1)
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (416/416)، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416)، تم.
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2153 (من 1)
استقبال الكائنات: 100٪ (2569/2569)، 1006.54 كيلو بايت | 22.37 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (404/404)، تم.
عن بعد: ضغط الكائنات: 100٪ (404/404)، تم.
استقبال الكائنات: 100٪ (2569/2569)، 1006.49 كيلو بايت | 22.37 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2165 (من 1)
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (416/416)، تم.
عن بعد: ضغط الكائنات: 100٪ (416/416)، تم.
عن بعد: المجموع 2569 (دلتا 3)، أعيد استخدام 0 (دلتا 0)، أعيد تجميع 2153 (من 1)
استقبال الكائنات: 100٪ (2569/2569)، 1006.53 كيلو بايت | 22.37 ميجابايت/ثانية، تم.
حل الفروق: 100٪ (3/3)، تم.
تتم التعبئة التلقائية للمستودع في الخلفية للحصول على الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
عن بعد: تعداد الكائنات: 2569، تم.
عن بعد: عد الكائنات: 100٪ (416/416)، تم.
remote: ضغط الكائنات: 100٪ (416/416) ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2153 (من 1)
استقبال الكائنات: 100٪ (2569/2569) ، 1006.53 كيلو بايت | 18.99 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (3/3) ، تم.
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (404/404) ، تم.
remote: ضغط الكائنات: 100٪ (404/404) ، تم.
استقبال الكائنات: 100٪ (2569/2569) ، 1006.51 كيلو بايت | 22.37 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (3/3) ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2165 (من 1)
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (404/404) ، تم.
remote: ضغط الكائنات: 100٪ (404/404) ، تم.
استقبال الكائنات: 100٪ (2569/2569) ، 1006.51 كيلو بايت | 22.88 ميجابايت / ثانية ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2165 (من 1)
حل الفروق: 100٪ (3/3) ، تم.
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (417/417) ، تم.
remote: ضغط الكائنات: 100٪ (417/417) ، تم.
remote: الإجمالي 2569 (دلتا 2) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2152 (من 1)
استقبال الكائنات: 100٪ (2569/2569) ، 1007.17 كيلو بايت | 13.80 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (2/2) ، تم.
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (416/416) ، تم.
remote: ضغط الكائنات: 100٪ (416/416) ، تم.
استقبال الكائنات: 100٪ (2569/2569) ، 1006.56 كيلو بايت | 22.88 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (3/3) ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2153 (من 1)
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (416/416) ، تم.
remote: ضغط الكائنات: 100٪ (416/416) ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2153 (من 1)
استقبال الكائنات: 100٪ (2569/2569) ، 1006.56 كيلو بايت | 11.44 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (3/3) ، تم.
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
remote: تعداد الكائنات: 2569 ، تم.
remote: عد الكائنات: 100٪ (405/405) ، تم.
remote: ضغط الكائنات: 100٪ (405/405) ، تم.
استقبال الكائنات: 100٪ (2569/2569) ، 1006.45 كيلو بايت | 21.88 ميجابايت / ثانية ، تم.
حل الفروق: 100٪ (3/3) ، تم.
remote: الإجمالي 2569 (دلتا 3) ، وإعادة استخدام 0 (دلتا 0) ، وإعادة تجميع 2164 (من 1)
التعبئة التلقائية للمستودع في الخلفية لتحقيق الأداء الأمثل.
راجع "git help gc" للصيانة اليدوية.
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 3) class UpdateUserOptionsForThreadTitlePrompts 	ActiveRecord::Migration[7.0]
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id >= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
:...skipping...
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 1) # frozen_string_literal: true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 2)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 3) class UpdateUserOptionsForThreadTitlePrompts 																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																															\u003c ActiveRecord::Migration[7.0]
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 4)   def up
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 5)     change_column_default :user_options, :show_thread_title_prompts, true
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 6)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 7)     if DB.query_single(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 8)          "SELECT 1 FROM user_options WHERE show_thread_title_prompts IS NULL LIMIT 1",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 9)        ).first
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 10)       batch_size = 100_000
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 11)       min_id = DB.query_single("SELECT MIN(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 12)       max_id = DB.query_single("SELECT MAX(user_id) FROM user_options").first.to_i
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 13)       while max_id 																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																													= min_id
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 14)         DB.exec(
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 15)           "UPDATE user_options SET show_thread_title_prompts = true WHERE user_id > #{max_id - batch_size} AND user_id <= #{max_id}",
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 16)         )
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 17)         max_id -= batch_size
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 18)       end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 19)     end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 20)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 21)     change_column_null :user_options, :show_thread_title_prompts, false
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 22)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 23)
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 24)   def down
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 25)   end
34c4acd32f5 (David Battersby 2024-05-17 00:53:19 +0400 26) end
~

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