2013-02-04 20 views
6

wiem, że mogę mieć następujące zadzwonić listę podzadań i mieć każdy wykorzystują środowisko Rails mojego projektu:„prywatny” zadania Rake z szynami środowiska

task :main_task => [:sub_task1, :sub_task2] do 
end 

task :sub_task1 => :environment do 
    Model1.some_class_method 
end 

task :sub_task2 => :environment do 
    Model2.some_class_method 
end 


moje pytania są

  1. Czy jest jakiś sposób na :main_task zdać :environment tak, że nie trzeba jawnie umieścić go w każdej pod-zadania?
  2. Czy istnieje sposób, aby podzapytania zostały uznane za "prywatne"? Oznacza to, że nie chcę, aby były one wyraźnie wywoływane indywidualnie. Będą wykonywać tylko od :main_task. Zasadniczo muszę odczytywać dane z jednej bazy danych (SQLServer) i zapełniać inną (MySQL - db projektu Rails), ale chcę, aby zadanie "odczytać" było oddzielne od zadania "zapełniania" dla dobrej czytelności.

Odpowiedz

6

Możesz podać zadanie :environment jeden raz w zadaniu nadrzędnym, zanim pozostałe dwa zostaną wymienione na liście tylko jeden raz.

task :main_task => [:environment, :sub_task1, :sub_task2] do 
end 

Nie ma „prywatny” zadania, jednak można zachować je przed wymienione przez rake -T za nie oddanie desc linię nad nimi. Możesz wymusić je ręcznie, wyrzucając wyjątek, jeśli są wywoływane bezpośrednio (wykrywanie czegoś, co robi rodzic lub inne).

Prawdopodobnie jednak lepiej byłoby wprowadzić kod we wspólnej metodzie lub klasie, która nie jest bezpośrednio narażona na działanie rake.

Powiązane problemy