Ich verwende Immer wenn Juwel, um eine Rake-Task auszuführen. Wenn ich Rake-Task ausführen, wird es in der Entwicklungsumgebung ausgeführt, aber wenn es zu einem geplanten Zeitpunkt ausgeführt wird, bezieht es sich auf eine Produktionsumgebung. Wie kann ich erzwingen, eine geplante Rake-Task in der Entwicklungsumgebung auszuführen? Wie ich verstehe, muss ich RAILS_ENV Variable verwenden, kann aber nicht herausfinden, wo es zu setzen. Ich denke, es hat nichts mit Immer wenn Juwel hier zu tun.Wie erzwinge Rake-Task in Entwicklungsumgebung mit Immer wenn Edelstein
6
A
Antwort
6
In schedule.rb
, können Sie die Umgebung geben Sie Aufgaben geplant sein möchten laufen in:
# config/schedule.rb
set :environment, 'development'
Alternativ können Sie die Umgebung auf einer Pro-Jobbasis einstellen:
# config/schedule.rb
every 1.day do
runner 'Model.task', :environment => 'development'
runner 'Model.task', :environment => 'production'
end
12
In jedem bash
Typ Shell können Sie in der Regel die Umwelt außer Kraft setzen, wenn Sie es ausführen:
RAILS_ENV=development rake task:name...
Sie können auch ein kleines Skript schreiben, dies für Sie tun:
#!/bin/sh
export RAILS_ENV=development
rake task:name...
Dies kann für andere Schalen nach Bedarf angepasst werden.
Können Sie die Aufgaben im Scheduler ausführen, ohne auf die verstrichene Zeit zu warten? –
Fragen Sie, ob es möglich ist, Aufgaben manuell auszuführen (d. H. Außerhalb des Schedulers)? Wenn ja, ja. Wenn Sie jedoch versuchen, das Immerwhen-Juwel zu verwenden, müssen Sie unbedingt ein Zeitintervall festlegen - AFAIK, das Mindestintervall ist eine Sekunde. Sonst würden Sie ständig und gleichzeitig Ihre Aufgaben ausführen ... was eigentlich nicht machbar ist. – zeantsoi