GlobalSetting.use_s3 ? - false

Essayez de résoudre le problème en migrant les fichiers vers S3. La première chose à noter est que la commande renvoie :

 GlobalSetting.use_s3?
 false

Et maintenant, la question : si le chargement de nouvelles images fonctionne (c’est-à-dire que S3 est correctement configuré), quelle est la cause de cette erreur (je souhaite transférer les images existantes avec DRY_RUN=1 rake uploads:migrate_to_s3) ?

Dois-je configurer autre chose en plus des paramètres dans le panneau d’administration ?
J’ai essayé de modifier discourse.conf comme suit :

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

mais cela n’a pas fonctionné.

Celles-ci sont formatées comme des variables d’environnement. Elles doivent se trouver dans la section env: de votre fichier app.yml.

2 « J'aime »

Je l’ai configuré à l’instant (GlobalSetting.use_s3? true)

Malheureusement, l’erreur est toujours la même. La commande rake uploads:migrate_to_s3 renvoie l’erreur

Si je ne me trompe pas, vous ne pouvez pas modifier les paramètres globaux depuis la console Rails ; en revanche, vous pouvez modifier les paramètres du site depuis la console :

Exemple de base de modification d’un paramètre du site :

pry(main)> SiteSetting.site_description
=> "Mon Super Site"

pry(main)> SiteSetting.site_description = "Mon Super Site Discourse"
=> "Mon Super Site Discourse"

pry(main)> SiteSetting.site_description
=> "Mon Super Site Discourse"

Un exemple spécifique, comparant les paramètres globaux et les paramètres du 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: 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__'

Lorsque j’ai effectué ce type de test depuis la console Rails, cela m’a amené à penser que les paramètres globaux ne peuvent pas être modifiés dans l’application une fois celle-ci construite ; en revanche, les paramètres du site peuvent être modifiés dans l’application après sa construction et pendant son exécution.

Par exemple, les adresses e-mail des développeurs sont définies dans le fichier yml du conteneur, et cette valeur ne peut pas être modifiée dans l’application, ce qui ajoute une couche de sécurité au site.

Dans certains cas, nous observons qu’un paramètre global est affecté à un paramètre du site, et c’est ensuite ce paramètre du site qui est utilisé dans l’application, ce qui permet de le modifier ; en revanche, lorsque c’est le paramètre global qui est utilisé dans l’application, cette valeur ne peut pas être modifiée (du moins, c’est ce qui semble ressortir des tests).

Cela semble, d’après mes tests limités, être l’une des différences fondamentales entre les paramètres globaux et les paramètres du site.

Ainsi, je pense que c’est la raison sous-jacente pour laquelle @eextra, en essayant de configurer GlobalSetting.use_s3? true, a constaté que cela ne fonctionnait pas comme prévu :

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