Wie kann ich den Befehl "delayed_job" erzwingen, eine bestimmte db-Verbindung zu verwenden?

8

Ich habe eine Rails 3-Anwendung, die abhängig von der Subdomain unterschiedliche Datenbanken verwendet. Ich mache dies, indem ich "setet_connection" im ApplicationController verwende.

Jetzt versuche ich, delayed_job gem zu benutzen, um Hintergrundverarbeitung zu machen, aber es benutzt die Datenbankverbindung, die in diesem Moment aktiv ist. Es verbindet sich mit der Subdomain-Datenbank.

Ich möchte es zwingen, die "gemeinsame" Datenbank zu verwenden. Ich habe dies für einige Modelle getan, die in dem Modell "setup_connection" aufrufen:

%Vor%

Irgendeine Idee, wie kann ich das tun?

    
JAG 25.06.2011, 16:29
quelle

1 Antwort

17

Hier ist, was Sie wissen müssen. Wenn Sie das DelayedJob-Juwel in Ihre App einschließen, erstellen Sie eine Migration, um die Tabelle zu erstellen, in der die Jobs gespeichert sind, aber Sie erstellen kein Modell. Der Grund dafür ist, dass DelayedJob bereits ein Modell im Edelstein enthält (d. H.% Co_de%). Was Sie tun müssen, ist dieses Modell leicht zu patchen, genau wie Sie es mit Ihren eigenen Modellen getan haben. Sie können dies in einem Initialisierer tun.

Vielleicht haben Sie bereits einen Initialisierer, um DelayedJob zu konfigurieren, wenn Sie das tun können, wenn nicht, müssen Sie einen erstellen. Also, erstellen Sie Ihren Initialisierer (in Delayed::Job ), wenn Sie keinen haben, wir nennen ihn config/initializers , fügen Sie nun folgendes hinzu:

%Vor%

Wir haben mit dem DelayedJob-Modell das Gleiche gemacht wie mit Ihren eigenen Modellen. Jetzt verwendet DelayedJob diese Verbindung, um Jobs in die DB zu stellen.

    
skorks 12.08.2011 00:56
quelle

Tags und Links