Intenta resolver el problema mediante la migración de archivos a S3. Lo primero es que el comando devuelve:
GlobalSetting.use_s3?
false
Y ahora la pregunta: si la carga de nuevas imágenes funciona (es decir, S3 está configurado correctamente), ¿qué causa este error (quiero transferir las imágenes existentes con DRY_RUN=1 rake uploads:migrate_to_s3)?
¿Debo configurar algo más allá de la configuración en el panel de administración?
Intenté editar discourse.conf de la siguiente manera:
Si no me equivoco, no puedes cambiar la configuración global desde la consola de Rails; sin embargo, sí puedes cambiar la configuración del sitio desde la consola:
Ejemplo básico de cambio de configuración del sitio:
pry(main)> SiteSetting.site_description
=> "My Cool Site"
pry(main)> SiteSetting.site_description = "My Great Discourse Site"
=> "My Great Discourse Site"
pry(main)> SiteSetting.site_description
=> "My Great Discourse Site"
Un ejemplo específico, comparando la configuración global con la configuración del sitio:
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: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):61:in `__pry__'
pry(main)> GlobalSetting.force_https = true
NoMethodError: undefined method `force_https=' for GlobalSetting:Class
Did you mean? force_https
from (pry):62:in `__pry__'
Cuando realicé este tipo de pruebas desde la consola de Rails, me llevó a creer que la configuración global no se puede cambiar en la aplicación una vez que esta ha sido construida; sin embargo, la configuración del sitio sí puede modificarse en la aplicación después de que ha sido construida y está en ejecución.
Por ejemplo, las direcciones de correo electrónico de los desarrolladores se establecen en el archivo yml del contenedor, y este valor no puede cambiarse en la aplicación, lo que añade una capa de seguridad al sitio.
En algunos casos, vemos que una configuración global se asigna a una configuración del sitio, y luego se utiliza la configuración del sitio en la aplicación, por lo que puede modificarse; sin embargo, cuando se utiliza la configuración global en la aplicación, este valor no puede cambiarse (o al menos eso parece durante las pruebas).
Esto parece ser, según mis pruebas limitadas, una de las diferencias fundamentales entre la configuración global y la configuración del sitio.
Por lo tanto, creo que esta es la razón subyacente por la que @eextra, al intentar establecer GlobalSetting.use_s3? true, descubrió que no funcionaba como se esperaba:
pry(main)> GlobalSetting.use_s3?
=> false
pry(main)> GlobalSetting.use_s3 = true
NoMethodError: undefined method `use_s3=' for GlobalSetting:Class
Did you mean? use_s3?
from (pry):8:in `__pry__'