Entorno de desarrollo: Puerto faltante provoca imágenes rotas

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 a hidden setting. Try changing it in the rails console.

bin/rails c

SiteSetting.port = 3000

This works, thank you.

Shouldn’t this be set to 3000 by default in development mode?

No, I don’t think so. Not everyone is using port 3000 for development.

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.

Logos work. It’s not something you usually care about in development.

Alternatively, I believe you can use these entries in sitesettings.yml

developer:
  force_hostname:
    hidden: false
    default: '<my-ip>'
  port:
    hidden: false
    default: '<my-port>'

@pfaffman gave me that tip! (and what a life saver that was)

Tuve el problema contrario al del autor del mensaje original al configurar un sitio de desarrollo ayer: estoy ejecutando mi servidor de desarrollo detrás de un proxy Nginx, por lo que quiero URLs limpias, pero sin importar lo que cambiara en mis configuraciones, Discourse seguía agregando :3000 a muchos de mis enlaces internos, incluido el logotipo del sitio. Finalmente, rastree esto hasta las líneas 291 a 293 en lib/discourse.rb:

if Rails.env.development? && SiteSetting.port.blank?
    url << ":#{ENV["UNICORN_PORT"] || 3000}"
end

Comentar estas líneas hizo que mi logotipo y otros enlaces funcionaran correctamente, aunque no sé si esto podría provocar que otras cosas dejen de funcionar en el futuro. Parece un poco contra intuitivo anular SiteSetting.port de esta manera.

Lo probé un poco más y parece que todo funciona correctamente si simplemente establezco SiteSetting.port = 443 y también marco la casilla de ‘forzar https’ (y supongo que también funcionaría con el puerto 80 y sin https). Había leído en algún lugar que debía dejar la configuración del puerto vacía, pero creo que eso fue un mal consejo.