I configured a logo in the site settings, but the logo’s URL is missing the default port, i.e. the logo URL looks like this http://localhost/uploads/… rather than http://localhost:3000/uploads/….
I’m starting the development server like this:
RAILS_ENV=development bundle exec rails server
I found that Discourse.base_url is set to "http://localhost" and in config/database.yml, I find this note for the development.hostnames key:
### Don't include the port number here.
Change the "port" site setting instead, at /admin/site_settings.
However, such a site setting does not exist. What do I do?
It’s the default, though, isn’t it? That one has to set the hidden port setting is not at all obvious, hence seeing a logo in the development environment not load is unexpected. In other words, setting a custom logo should just work.
J’ai rencontré le problème inverse de celui du créateur du sujet hier lors de la configuration d’un site de développement : j’exécute mon serveur de développement derrière un proxy Nginx, je veux donc des URL propres, mais peu importe ce que je modifiais dans mes paramètres, Discourse continuait d’ajouter :3000 à de nombreux liens internes, y compris le logo du site. J’ai finalement identifié la cause aux lignes 291 à 293 dans lib/discourse.rb :
if Rails.env.development? && SiteSetting.port.blank?
url << ":#{ENV["UNICORN_PORT"] || 3000}"
end
En commentant ces lignes, mon logo et les autres liens fonctionnent correctement, bien que je ne sache pas si cela pourrait entraîner d’autres problèmes à l’avenir. Cela semble un peu contre-intuitif de remplacer SiteSetting.port de cette manière.
J’ai un peu joué avec cela, et il semble que tout fonctionne correctement si je définis simplement SiteSetting.port = 443 et que je coche également la case « forcer HTTPS » (et je suppose que cela fonctionnerait également avec le port 80 et sans HTTPS). J’avais lu quelque part que je devrais laisser les paramètres de port vides, mais je suppose que c’était un mauvais conseil.