discourse(prod)> TopicEmbed.find_by(topic_id: 157441).as_json
Serializing ActiveRecord models (TopicEmbed) without specifying fields is not allowed. Use a Serializer, or pass the :only option to #serializable_hash. More info: ``https://meta.discourse.org/t/-/314495
=>
{“id”=>56685,
“topic_id”=>157441,
“post_id”=>483289,
“embed_url”=>
“``https://tecnoblog.net/noticias/paramount-oferece-us-108-bilhoes-em-dinheiro-para-tomar-warner-da-netflix”``,
“content_sha1”=>nil,
“created_at”=>“2025-12-08T17:54:07.585Z”,
“updated_at”=>“2025-12-09T18:04:33.539Z”,
“deleted_at”=>nil,
“deleted_by_id”=>nil,
“embed_content_cache”=>“”}
discourse(prod)>
هل يمكنك فقط تشغيل نفس الأمر مرة أخرى، ولكن هذه المرة:
./launcher enter app
rails c
TopicEmbed.find_by(topic_id: 157441).embed_url
إذا كانت القيمة التي شاركتها هي بالفعل قيمة embed_url في قاعدة بياناتك، فهذه هي المشكلة، وسأقوم بإنشاء طلب سحب (PR) صغير إلى discourse/discourse للتعامل مع الحالات القصوى مثل هذه حيث انتهى الأمر بـ embed_url في حالة سيئة التكوين.
إذًا المشكلة بأكملها هي لأن طلب السحب (PR) أعلاه بدأ بإزالة الشرطات المائلة النهائية من TopicEmbed في يناير من هذا العام؟ أشعر بتضارب بشأن هذا التغيير. أُفضل أن نحترم ما يرسله لنا المسؤول بصراحة.
السبب الذي جعلنا نجري هذا التغيير هو وجود عدم اتساق بين كيفية عمل تضمينات WP Discourse وتضمينات javascript. كانت تضمينات javascript تقوم دائمًا بتطبيع عنوان URL. جاءت تضمينات WP Discourse عبر مسار مختلف ولم تكن تقوم بتطبيع عنوان URL (حتى أجرينا التغيير). أدى ذلك إلى بعض حالات عدم الاتساق الأخرى.
هناك مشكلة أخرى وهي أنه عندما أقوم بتشغيل أمر curl إلى واجهة برمجة التطبيقات (API)، والبحث عن مُعرِّف الموضوع (topic ID) الخاص برابط التضمين (embed URL)، لا يمكنني العثور عليه بسبب الشرطة المائلة اللاحقة (trailing slash). يُرجع Discourse صفحة 404.
ولكن إذا قمت بإزالة الشرطة المائلة اللاحقة، فإنه يُرجع القيمة:
mobilon@Thiagos-MacBook-Pro ~ % curl 'https://tecnoblog.net/comunidade/embed/info?embed_url=https://tecnoblog.net/noticias/anatel-e-receita-apreendem-quase-meio-milhao-de-produtos-em-santa-catarina/' -H 'API-KEY: <API KEY>' -H 'API-USERNAME: <USERNAME>'
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8">
<title>الصفحة غير موجودة - مجتمع Tecnoblog</title>
لجعل الأمر يعمل، سأحتاج إلى إجراء استبدال للسلسلة النصية (str replace) في ووردبريس (WordPress)، لإزالة الشرطة المائلة اللاحقة من الرابط الدائم (permalink) قبل التحقق. ولكن هذا لا معنى له، فالرابط الكنسي (canonical URL) يحتوي على الشرطة المائلة اللاحقة…
عمليًا، يقوم Discourse بتطبيع الرابط الدائم إلى عنوان URL غير موجود… يجب أن يكون الإصدار المُطَبَّع هو الذي يحتوي على الشرطة المائلة اللاحقة.
لكنني ما زلت قلقًا بشأن عناوين URL التي لا تحتوي على شرطة مائلة لاحقة، للأسباب المذكورة في منشوري السابق. هل يجب أن أفتح موضوعًا جديدًا حول هذا @angus؟
بالتأكيد! لن يؤثر ذلك على ميزة “المنشور الكامل” حيث يمكننا الآن متابعة عمليات إعادة التوجيه في المواقع الموجودة في نفس نطاق المنتدى، ولكن يمكنك المتابعة في موضوع جديد للمخاوف الأخرى.