GlobalSetting.use_s3? - false

Versuchen Sie, das Problem mit der Dateimigration zu S3 zu lösen. Als Erstes gibt der Befehl Folgendes zurück:

 GlobalSetting.use_s3?
 false

Und nun die Frage: Wenn das Laden neuer Bilder funktioniert (d. h. S3 ist korrekt konfiguriert), was verursacht dann diesen Fehler? (Ich möchte vorhandene Bilder mit DRY_RUN=1 rake uploads:migrate_to_s3 übertragen.)

Muss ich etwas zusätzlich zu den Einstellungen im Admin-Bereich festlegen?
Ich habe versucht, discourse.conf wie folgt zu bearbeiten:

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

Datei, aber es hat nicht funktioniert.

Diese sind wie Umgebungsvariablen formatiert. Sie sollten im Abschnitt env: Ihrer app.yml stehen.

Ich habe es gerade richtig eingestellt (GlobalSetting.use_s3? true)

Leider tritt derselbe Fehler weiterhin auf. Der Befehl rake uploads:migrate_to_s3 meldet den Fehler.

Wenn ich mich nicht irre, können Sie globale Einstellungen nicht über die Rails-Konsole ändern; Sie können jedoch Site-Einstellungen über die Konsole ändern:

Ein einfaches Beispiel zum Ändern einer Site-Einstellung:

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"

Ein spezifisches Beispiel, das globale Einstellungen mit Site-Einstellungen vergleicht:

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

Als ich diese Art von Tests in der Rails-Konsole durchführte, kam ich zu dem Schluss, dass globale Einstellungen in der Anwendung nicht geändert werden können, nachdem die Anwendung erstellt wurde. Site-Einstellungen können jedoch in der App geändert werden, nachdem sie erstellt und ausgeführt wird.

Beispielsweise werden die E-Mail-Adressen der Entwickler in der Container-YML-Datei festgelegt, und dieser Wert kann in der App nicht geändert werden, was der Site eine zusätzliche Sicherheitsebene verleiht.

In einigen Fällen sehen wir, dass eine globale Einstellung einer Site-Einstellung zugewiesen wird und dann die Site-Einstellung in der App verwendet wird, sodass sie geändert werden kann. Wenn jedoch die globale Einstellung in der App verwendet wird, kann dieser Wert nicht geändert werden (oder so scheint es zumindest während der Tests).

Dies scheint basierend auf meinen begrenzten Tests einer der grundlegenden Unterschiede zwischen globalen Einstellungen und Site-Einstellungen zu sein.

Ich denke, dies ist der zugrunde liegende Grund, warum @eextra bei dem Versuch, GlobalSetting.use_s3? true zu setzen, feststellte, dass es nicht wie erwartet funktionierte:

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