f1r4s
(Eddie)
10 يناير 2022، 10:00م
1
أهلاً،
لدي مشكلة في قسم الشارات (badges)، لقد قمت بتعديل بعض الشارات وإضافة بعض الصور إليها؛ بعد 6 أشهر قمت باستعادة نسخة احتياطية وكل شيء يعمل بشكل جيد باستثناء قسم الشارات؛ حاولت تسجيل الدخول في الوضع الآمن (safe-mode) وتعطيل جميع الإضافات (plugins)… لكن المشكلة لا تزال كما هي، كيف يمكنني استعادة أقسام الشارات بالأسماء والصور الافتراضية؟
يظهر الخطأ
Message (2 copies reported)
NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
app/controllers/application_controller.rb:484:in `serialize_data'
app/controllers/badges_controller.rb:30:in `index'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
Backtrace
app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:89:in `block in _serializable_array'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `map'
active_model_serializers (0.8.4) lib/active_model/array_serializer.rb:79:in `_serializable_array'
Env
HTTP HOSTS: site.com
إعجاب واحد (1)
هل تم استعادة الصور الأخرى بشكل صحيح؟
هل تأكدت من تضمين التحميلات في النسخة الاحتياطية؟
هل تستخدم S3 لتخزين التحميلات الخاصة بك؟ إذا لم يكن الأمر كذلك، هل يمكنك الدخول إلى الحاوية، والانتقال إلى /shared/uploads/default/original/1X هل لديك ملفات هناك؟
إعجاب واحد (1)
f1r4s
(Eddie)
11 يناير 2022، 7:24م
3
نعم، أنا لا أستخدم S3، وأنا دائماً أدرج صور المرفقات في النسخ الاحتياطي…
ما أبحث عنه الآن هو كيفية إعادة تعيين صور الشارات؟
بشكل افتراضي، لا توجد طريقة لـ “إعادة تعيين صور الشارات” على حد علمي.
ما سأفعله أولاً هو التحقق من أن الشارات التي تفتقد الصور قد تم استعادتها على الأقل. إذا قمت بفحص جدول badges، يمكنك الحصول على معرف الصورة في حقل image_upload. ثم استخدم هذا المعرف في جدول uploads للحصول على عنوان URL للصورة، كالتالي:
select url from uploads where id = <badge-upload-id>
يبدو عنوان URL شيئًا كهذا: /uploads/default/original/1X/c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg ومن هناك، يمكنك استخراج اسم الملف، وفي هذه الحالة سيكون c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg
ثم يمكنك التحقق في الخادم من وجود الصورة باستخدام find أو أي طريقة أخرى تفضلها
cd /
find . -name c1325294cd04ae6e9072a2577543dad66cf31afe.jpeg
بمجرد التأكد من استعادة الصور، في المسار الصحيح، يمكنك متابعة تصحيح الأخطاء حيث أن المشكلة في مكان آخر.
هل إصدار Discourse من النسخة الاحتياطية مختلف جدًا عن إصدار Discourse الذي تقوم بالاستعادة إليه؟
ربما يعرف شخص آخر في المجتمع المزيد عن هذا الأمر.
إعجاب واحد (1)
f1r4s
(Eddie)
11 يناير 2022، 7:52م
5
ممتاز، ولكن كيف يمكنني معرفة عنوان URL للشارة المفقودة أو اسمها؟
لا يمكنني العثور على كيفية معرفة عنوان URL للصورة أو اسم الشارة المفقودة.
اتبع التعليمات هنا Discourse Data Explorer لتثبيت إضافة مستكشف البيانات، يمكنك استخدامها لفحص جدول الشارات. ركز على شاراتك المخصصة.
إعجاب واحد (1)
f1r4s
(Eddie)
11 يناير 2022، 7:59م
7
لقد قمت بتثبيته؛ لكنني لم أجد جدول الشارات؛
هذا هو الخطأ الذي أحصل عليه عند فتح ملف تعريف المسؤول؛
رسالة
NoMethodError (undefined method `url' for nil:NilClass)
app/models/badge.rb:306:in `image_url'
(eval):10:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
lib/freedom_patches/ams_include_without_root.rb:54:in `include!'
app/controllers/users_controller.rb:92:in `block (2 levels) in show'
app/controllers/users_controller.rb:89:in `show'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:198:in `call'
تتبع
app/models/badge.rb:306:in `image_url'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:99:in `block in attribute'
(eval):10:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:448:in `block in merge_association'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `each'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:445:in `merge_association'
بيئة
HTTP HOSTS: site.com
مرحباً @f1r4s
لقد واجهت نفس المشكلة. هل تمكنت من حل هذه المشكلة؟
أعتقد أنه تم حل هذه المشكلة في هذا الموضوع:
I have this issue since a month; but i try several time upgrade; migrate the database to new one; etc… with no fix.
It was in admin user; i try to migrate the admin data to new one; same issue… i cannot open the preference or profile and i get 404;
i see same issue but none explain how to fix and it’s quit old since 3 years.
same issue and they mention it’s fixed but too old and none explaine how to fix.
إعجاب واحد (1)