تضمين عنصر تعليق على localhost يسبب خطأ FrozenError

لدي موقع Rails يعمل على localhost:5000، كما يعمل خادم Discourse محليًا على localhost:3000. أريد تمكين التعليقات على المقالات (وهي مورد في Rails في حالتي)، لذا قمت بإعداد مضيف قابل للتضمين في لوحة إدارة Discourse:

هذا هو مقتطف السكربت الذي أضفته في عرض Rails الخاص بي:

<div id='discourse-comments'></div>

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'http://localhost:3000/',
                 discourseEmbedUrl: '<%= "http://localhost:5000/articles/#{@article.id}" %>'};

  (function() {
   var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
   d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
   (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body') 
  [0]).appendChild(d);
 })();

أحصل على رسالة “جاري تحميل النقاش…” لكن لا يحدث أي شيء بعد ذلك. لقد حاولت تتبع المشكلة وهذا ما أعتقد أنه يحدث.

في Sidekiq، يفشل العمل Jobs::RetrieveTopic بالخطأ Jobs::HandledExceptionWrapper: Wrapped FrozenError: can't modify frozen String.

لقد تتبعته في الكود إلى السطر 192 في طريقة TopicEmbed.absolutize_url:

prefix = "#{uri.scheme}://#{uri.host}"
prefix << ":#{uri.port}" if uri.port != 80 && uri.port != 443

بما أن المنفذ الخاص بي هو 5000 (وليس 80 أو 443)، يحاول الكود دمج المنفذ مع سلسلة الـ prefix ويتم رفع FrozenError. يحتوي عمل RetrieveTopic على تعليق البراجما # frozen_string_literal: true. لقد جربت فعليًا إزالته كتجربة لكن المشكلة استمرت، لذا لست متأكدًا مما إذا كانت جميع السلاسل الحرفية مجمدة افتراضيًا في Discourse.

هل لديك أي نصائح حول كيفية جعل هذا يعمل محليًا؟ أيضًا، إذا كان من المفترض أن تكون السلاسل الحرفية مجمدة بالفعل، فهل هذه عيب؟

Discourse لا يدعم التشغيل على منافذ غير قياسية.