Rails 3 Initialisierungen, die nur auf 'rails server' laufen und nicht auf 'rails generate', etc

9

Ich habe einen relativ kleinen Initialisierungscode, den ich ausführen möchte, wenn rails server läuft, aber nicht, wenn ich rails generate , rails console oder irgendeinen anderen rails-Befehl ausführen (einschließlich Rake-Aufgaben, die die Umgebungsaufgabe erfordern) . Dieser Codeabschnitt füllt einige Caches vor und ist relativ teuer, daher möchte ich nicht, dass er auf etwas anderem als rails s

läuft

Lösungen, die nicht zufriedenstellend sind:

Foremanet al. Das bedeutet, dass es auf einem anderen Prozess ausgeführt wird, der für diesen kleinen Codeabschnitt (a) über dem Anfang steht. (b) erfordert Interprozesskommunikation anstelle des einfachen In-Memory-Ansatzes, der vom Initialisierer bereitgestellt wird.

Auf dem Server habe ich das gelöst, indem ich passagier konfiguriert habe, um eine spezielle Umgebungsvariable in Rails zu übergeben und ihm zu sagen, dass es im Serverkontext läuft. Aber ich würde es gerne, wenn möglich, out of the box auf allen Maschinen des Entwicklers arbeiten, ohne sich daran zu erinnern, Rails Server auf eine Weise zu betreiben, die auch diese Umgebungsvariable (d. H.% Co_de%) bereitstellt.

Diese Frage wurde schon immer in Bezug auf die Ausführung eines Initialisierers gestellt, wenn er in IN_SERVER=true rails server und nicht in rails server ausgeführt wird. Ich möchte es jedoch nur bei der Server-Initialisierung ausführen - die Korrektur für Rake ist großartig, aber nicht umfassend.

    
Nimrod Priell 28.12.2011, 18:54
quelle

2 Antworten

4

Können Sie etwas wie das Überschreiben von Rails::Server#initialize ausführen, so dass es Ihren Initialisierungscode in Ihrem Initialisierer aufruft?

Oder, einfacher gesagt, setzen Sie Ihren Code in script/rails , da dieser immer ausgeführt wird, wenn Sie rails server ausführen, können Sie leicht mit ARGV oder ENV darin herumspielen.

    
riffraff 28.12.2011, 19:32
quelle
0

Hier ist eine Möglichkeit:

%Vor%     
Rob 17.05.2017 00:37
quelle