Prova a risolvere il problema migrando i file su S3. La prima cosa da notare è che il comando restituisce:
GlobalSetting.use_s3?
false
E ora la domanda: se il caricamento di nuove immagini funziona (cioè S3 è configurato correttamente), cosa causa questo errore? (Voglio trasferire le immagini esistenti con DRY_RUN=1 rake uploads:migrate_to_s3).
Devo impostare qualcosa oltre alle impostazioni nel pannello di amministrazione?
Ho provato a modificare discourse.conf in questo modo:
Se non erro, non è possibile modificare le impostazioni globali dalla console di Rails; tuttavia, è possibile modificare le impostazioni del sito dalla console:
Esempio di base per modificare un’impostazione del sito:
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 esempio specifico, che confronta le impostazioni globali con quelle del sito:
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__'
Quando ho eseguito questo tipo di test dalla console di Rails, ho dedotto che le impostazioni globali non possono essere modificate nell’applicazione dopo che questa è stata costruita; mentre le impostazioni del sito possono essere modificate nell’app dopo che è stata costruita ed è in esecuzione.
Ad esempio, gli indirizzi email degli sviluppatori sono impostati nel file yml del container e questo valore non può essere modificato nell’app, il che aggiunge un livello di sicurezza al sito.
In alcuni casi, vediamo che un’impostazione globale viene assegnata a un’impostazione del sito, e successivamente viene utilizzata nell’app, permettendone la modifica; tuttavia, quando viene utilizzata un’impostazione globale nell’app, questo valore non può essere modificato (o almeno così sembra durante i test).
Sembra, basandomi sui miei limitati test, che questa sia una delle differenze fondamentali tra le impostazioni globali e quelle del sito.
Quindi, credo che questa sia la ragione per cui, quando @eextra ha tentato di impostare GlobalSetting.use_s3? true, ha scoperto che non funzionava come previsto:
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__'