# Ambiente de desenvolvimento: porta ausente resulta em imagens quebradas

**URL:** https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388
**Category:** Development
**Created:** [Janeiro 24, 2019, 9:32am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388 "2019-01-24T09:32:50Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![kleinfreund](https://avatars.discourse-cdn.com/v4/letter/k/a6a055/32.png) [@kleinfreund](https://meta.discourse.org/u/kleinfreund)
#### Post date: [Janeiro 24, 2019, 9:32am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/1 "2019-01-24T09:32:50Z")

</div>

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:

```sh
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:

```plaintext
### 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?

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [Janeiro 24, 2019, 9:55am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/2 "2019-01-24T09:55:43Z")

</div>

It’s a hidden setting. Try changing it in the rails console.

```plaintext
bin/rails c

SiteSetting.port = 3000

```

---

<div class="post-metadata">

### Author: ![kleinfreund](https://avatars.discourse-cdn.com/v4/letter/k/a6a055/32.png) [@kleinfreund](https://meta.discourse.org/u/kleinfreund)
#### Post date: [Janeiro 24, 2019, 10:12am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/3 "2019-01-24T10:12:37Z")

</div>

This works, thank you.

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

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [Janeiro 24, 2019, 10:13am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/4 "2019-01-24T10:13:48Z")

</div>

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

---

<div class="post-metadata">

### Author: ![kleinfreund](https://avatars.discourse-cdn.com/v4/letter/k/a6a055/32.png) [@kleinfreund](https://meta.discourse.org/u/kleinfreund)
#### Post date: [Janeiro 24, 2019, 10:34am UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/5 "2019-01-24T10:34:59Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Janeiro 24, 2019, 1:44pm UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/6 "2019-01-24T13:44:54Z")

</div>

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

---

<div class="post-metadata">

### Author: ![merefield](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/merefield/32/176214_2.png) [@merefield](https://meta.discourse.org/u/merefield)
#### Post date: [Janeiro 24, 2019, 1:47pm UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/7 "2019-01-24T13:47:24Z")

</div>

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

```plaintext
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)

---

<div class="post-metadata">

### Author: ![reswild](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/reswild/32/132236_2.png) [@reswild](https://meta.discourse.org/u/reswild)
#### Post date: [Julho 24, 2019, 3:17pm UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/8 "2019-07-24T15:17:28Z")

</div>

Eu tive o problema oposto ao do autor da postagem original ao configurar um site de desenvolvimento ontem: estou executando meu servidor de desenvolvimento atrás de um proxy Nginx, então quero URLs limpas, mas não importa o que eu mudasse nas minhas configurações, o Discourse continuava adicionando :3000 a muitos dos meus links internos, incluindo o logotipo do site. Acabei rastreando isso até as linhas 291 a 293 em lib/discourse.rb:

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

```

Comentar essas linhas fez com que meu logotipo e outros links funcionassem corretamente, embora eu não saiba se isso pode levar a outros problemas no futuro. Parece um pouco contra-intuitivo substituir o SiteSetting.port dessa maneira.

---

<div class="post-metadata">

### Author: ![reswild](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/reswild/32/132236_2.png) [@reswild](https://meta.discourse.org/u/reswild)
#### Post date: [Julho 28, 2019, 10:46pm UTC](https://meta.discourse.org/t/dev-environment-missing-port-leads-to-broken-images/107388/9 "2019-07-28T22:46:42Z")

</div>

Brinquei um pouco mais com isso e parece que tudo funciona corretamente se eu apenas definir SiteSetting.port = 443 e também marcar a caixa ‘forçar https’ (e imagino que também funcionaria com a porta 80 e sem https). Eu tinha lido em algum lugar que deveria deixar as configurações de porta vazias, mas acho que era um conselho ruim.
