GlobalSetting.use_s3? - false

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:

DISCOURSE_S3_BUCKET=00000 \
DISCOURSE_S3_REGION=eu-west-2 \
DISCOURSE_S3_ACCESS_KEY_ID=00000 \
DISCOURSE_S3_SECRET_ACCESS_KEY=00000 \

ma non ha funzionato.

Sono formattati come variabili d’ambiente. Dovrebbero essere nella sezione env: del tuo file app.yml.

L’ho impostato correttamente ora (GlobalSetting.use_s3? true)

Purtroppo, l’errore persiste. Il comando rake uploads:migrate_to_s3 restituisce l’errore

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__'