Ho un sito Rails in esecuzione su localhost:5000 e un server Discourse locale in esecuzione su localhost:3000. Voglio abilitare i commenti sugli articoli (che nel mio caso sono una risorsa di Rails), quindi ho configurato un host incorporabile nel pannello di amministrazione di Discourse:
Questo è il frammento di script che ho aggiunto alla mia vista di 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);
})();
Sto ricevendo il messaggio “Loading Discussion…” ma non succede altro. Ho provato a tracciare il problema e questo è ciò che penso stia accadendo.
Su Sidekiq, il job Jobs::RetrieveTopic fallisce con Jobs::HandledExceptionWrapper: Wrapped FrozenError: can't modify frozen String.
Ho fatto risalire il problema nel codice alla riga 192 nel metodo TopicEmbed.absolutize_url:
prefix = "#{uri.scheme}://#{uri.host}"
prefix << ":#{uri.port}" if uri.port != 80 && uri.port != 443
Poiché la mia porta è 5000 (non 80 o 443), il codice tenta di concatenare la porta alla stringa prefisso e viene sollevato un FrozenError. Il job RetrieveTopic ha il commento pragma # frozen_string_literal: true. Ho effettivamente provato a rimuoverlo come esperimento, ma il problema persiste, quindi non sono sicuro che tutte le stringhe letterali siano congelate di default in Discourse.
Qualche consiglio su come far funzionare tutto in locale? Inoltre, se le stringhe letterali dovrebbero davvero essere congelate, si tratta di un bug?
