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