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.
У меня возникла обратная проблема по сравнению с тем, что описал автор оригинального поста, когда я настраивал dev-сайт вчера: мой dev-сервер работает за прокси Nginx, поэтому мне нужны чистые URL-адреса, но что бы я ни менял в настройках, Discourse продолжал добавлять :3000 ко многим моим внутренним ссылкам, включая логотип сайта. В конце концов я выяснил, что проблема кроется в строках 291–293 файла lib/discourse.rb:
if Rails.env.development? && SiteSetting.port.blank?
url << ":#{ENV["UNICORN_PORT"] || 3000}"
end
Комментирование этих строк позволило логотипу и другим ссылкам работать корректно, хотя я не знаю, не приведёт ли это к другим проблемам в будущем. Похоже, что переопределять SiteSetting.port таким образом немного противоречит интуиции.
Я немного поэкспериментировал с этим, и оказалось, что всё работает корректно, если просто установить SiteSetting.port = 443 и также включить опцию «принудительный HTTPS» (хотя, думаю, это сработает и с портом 80 без HTTPS). Я где-то читал, что настройки порта лучше оставить пустыми, но, похоже, это был плохой совет.