Tente resolver o problema com a migração de arquivos para o S3. O primeiro ponto é que o comando retorna:
GlobalSetting.use_s3?
false
Agora, a pergunta: se o carregamento de novas imagens funciona (ou seja, o S3 está configurado corretamente), o que causa esse erro (quero transferir as imagens existentes com DRY_RUN=1 rake uploads:migrate_to_s3)?
Devo configurar algo além das configurações no painel de administração?
Tentei editar o discourse.conf assim:
Se não me engano, você não pode alterar configurações globais a partir do console do Rails; no entanto, é possível alterar configurações do site pelo console:
Exemplo básico de alteração de configuração do site:
pry(main)> SiteSetting.site_description
=> "Meu Site Legal"
pry(main)> SiteSetting.site_description = "Meu Ótimo Site Discourse"
=> "Meu Ótimo Site Discourse"
pry(main)> SiteSetting.site_description
=> "Meu Ótimo Site Discourse"
Um exemplo específico, comparando configurações globais com configurações do site:
pry(main)> GlobalSetting.force_https
=> true
pry(main)> SiteSetting.force_https = false
false
pry(main)> SiteSetting.force_https
=> false
pry(main)> SiteSetting.force_https = true
=> true
pry(main)> GlobalSetting.force_https
=> true
pry(main)> GlobalSetting.force_https = false
NoMethodError: método não definido `force_https=' para GlobalSetting:Class
Você quis dizer? force_https
from (pry):61:in `__pry__'
pry(main)> GlobalSetting.force_https = true
NoMethodError: método não definido `force_https=' para GlobalSetting:Class
Você quis dizer? force_https
from (pry):62:in `__pry__'
Ao realizar esse tipo de teste a partir do console do Rails, cheguei à conclusão de que as configurações globais não podem ser alteradas no aplicativo após sua construção; no entanto, as configurações do site podem ser alteradas no aplicativo após sua construção e execução.
Por exemplo, os endereços de e-mail dos desenvolvedores são definidos no arquivo yml do container, e esse valor não pode ser alterado no aplicativo, o que adiciona uma camada de segurança ao site.
Em alguns casos, vemos que uma configuração global é atribuída a uma configuração do site, e então a configuração do site é usada no aplicativo e, portanto, pode ser alterada; no entanto, quando a configuração global é usada no aplicativo, esse valor não pode ser alterado (ou pelo menos parece ser durante os testes).
Isso parece, com base nos meus testes limitados, ser uma das diferenças fundamentais entre configurações globais e configurações do site.
Portanto, acredito que essa é a razão subjacente quando @eextra tentou definir GlobalSetting.use_s3? true e descobriu que não funcionou conforme o esperado:
pry(main)> GlobalSetting.use_s3?
=> false
pry(main)> GlobalSetting.use_s3 = true
NoMethodError: método não definido `use_s3=' para GlobalSetting:Class
Você quis dizer? use_s3?
from (pry):8:in `__pry__'