Kontext: Ich importiere ein vBulletin-Forum nach Discourse.
Ich möchte Dinge wie CDN, Remote-Backups usw. konfigurieren, bevor bestehende Benutzer auf den Forumsinhalt zugreifen können.
Ich möchte das Forum lieber nicht im Nur-Lese-Modus betreiben, da es für die Benutzer frustrierend wäre, nach einigen Monaten endlich wieder (und aktualisierten!) Inhalt zu sehen, aber nicht damit interagieren zu können. In diesem Kontext: Wenn der Inhalt verfügbar ist, sollte er auch interaktiv sein.
Im Grunde müsste ich also sicherstellen, dass Discourse für das Personal verfügbar ist, aber für andere Benutzer eine Wartungsseite anzeigt – auch wenn sie theoretisch einloggen könnten – und gleichzeitig muss meine Website weiterhin mit Diensten wie dem CDN kommunizieren können, damit ich diese ordnungsgemäß konfigurieren kann.
AFAIK ist der einfachste Weg, die Seite auf Login erforderlich zu stellen, die Option Benutzer müssen genehmigt werden zu aktivieren und SMTP auf etwas wie Mailhog zu richten. Ich erinnere mich nicht mehr, ob der Importeur Benutzer automatisch genehmigt. Falls ja, kannst du im Rails-Console folgendes tun:
approved_users = AdminUserIndexQuery.new(query: 'approved', stats: false).find_users_query
approved_users.each do |u|
u.approved = false
u.save!
end
Und schalte die Genehmigung dann ab, sobald alles bereit ist.
Auf diese Weise werden während der Migration keine Nachrichten öffentlich versendet, und du kannst alle von Discourse generierten Nachrichten einsehen, falls etwas schiefgeht.
Es sei denn, du wählst die Migration von Passwörtern – in diesem Fall setzen Benutzer ohnehin ihre Anmeldedaten zurück.
Ich würde Mailhog oder eine ähnliche Lösung empfehlen, nur um sicherzustellen, dass Discourse nicht Haufenweise von Benachrichtigungs-E-Mails generiert.
Ohne Einblicke riskierst du einfach, die Schleusen zu öffnen, indem du die E-Mail-Funktion wieder aktivierst.
Klar, genau das macht Mailhog. Es nimmt Nachrichten entgegen, zeigt die Warteschlange an und bietet dir die Möglichkeit, E-Mails an die Postfächer zu übergeben.