2013-06-28 10 views
6

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

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 
+0

Können Sie die Aufgaben im Scheduler ausführen, ohne auf die verstrichene Zeit zu warten? –

+1

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

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.