Ich habe ein Problem mit dem Ändern der ActionMailer :: Base.default_url_options = {: Host => Host} zur Laufzeit in einem meiner Projekte.Sidekiq + Devise Mailer mit mehreren Subdomains
Setup: Ich habe mehrere Subdomains, die dieselbe Rails-Applikation im Backend verwenden. Ich möchte meine Devise-Mails über eine Sidekiq-Warteschlange an die Benutzer senden. Die Devise-Mails (Bestätigung, Reset-Passwort) enthalten Links und diese Links benötigen die jeweilige Subdomain als korrekt.
Meine Umgebung
rails (4.2.0)
sidekiq (3.3.1)
devise (3.4.1)
devise-async (0.9.0)
ich before_action in meinem application_controller
class ApplicationController < ActionController::Base
before_action :set_action_mailer_default_url_options
private
def set_action_mailer_default_url_options
host = "my-logic-to-get-the-correct-host"
ActionMailer::Base.default_url_options = {:host => host}
end
end
Nun, wenn ich mein Passwort zurücksetzen wollen erhalte ich immer die Standard-URL-Optionen, die ich in den Umgebungen festgelegt haben Datei. Wenn ich die default_url_options aus meinen Umgebungen entferne, erhalte ich den Default Devise Fehler in meinen Sidekiq Logs.
ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Der Host wird immer korrekt in der Steuerung gesetzt. Das habe ich bereits getestet. Es scheint, dass der Host nicht an sidekiq übergeben wird .. eine Idee, wie ich das beheben kann?
Ich kann die Subdomain irgendwo nicht speichern, weil ein Benutzer die E-Mails von verschiedenen Subdomains auslösen kann und nicht immer die gleichen. Ich brauche eine Möglichkeit, Devise mitzuteilen, welcher Host zum Senden einer bestimmten E-Mail verwendet werden soll. Kann ich den Devise-Mailer überschreiben und den Host oder etwas ähnliches weitergeben?
Lösung Nach ist nicht möglich, in meinem Fall: Dynamic domain name in Rails action mailer while using sidekiq
Btw: der komplette Workflow mit devise, ersinnen-Asynchron und sidekiq selbst arbeitet (in der Entwicklung, Bereitstellung und Produktion). Nur der Host der Links ist nicht korrekt -> und das ist mein großes Problem :-) ..
Hallo, haben Sie irgendeine Lösung gefunden? –
@codingaddicted - Ich habe meine Antwort unten hinzugefügt. – Mattherick