2010-03-24 12 views
7

Mam działanie kontrolera, które generuje wiele raportów programu Excel, zajmuje to około 10 minut. Czasem nazywam to z mojej aplikacji internetowej, dlatego jest to działanie.Jak mogę wywołać działanie kontrolera z zadania rake?

Ale chcę też utworzyć zadanie rake, aby uruchomić to, więc mogę zaplanować automatyczne uruchamianie raz na noc.

Jakikolwiek sposób to zrobić?

+0

Tak jak mówią inni, musisz przenieść kod do modelu. Posiadanie rzeczy na kontrolerach to zła praktyka. – kikito

Odpowiedz

3

Czy potrafisz obsłużyć generowanie raportów ze swoich modeli? Modele should be doing most of the work anyway i mogą być dostępne z zadań Rake:

task :reports => :environment do 
    ... 
    # Do stuff with your models. 
end 
+1

Nie sądzę, muszę renderować szablony XML w celu generowania raportów Excel – Janak

3

myślę, że trzeba przenieść swój kod do swojego modelu. Ponieważ źle jest umieścić wiedzę na temat renderowania wyjściowego w modelach, sugerowałbym umieszczenie całej logiki biznesowej i manipulacji danymi w modelu, ale następnie umieszczenie kodu renderującego w zadaniu rake. To spowodowałoby, że zadanie rake było analogiczne do kontrolera używanego w sieci - utrzymując separację obaw.

Możesz spojrzeć na ActionView :: Base i tam pracować, aby dowiedzieć się, jak włączyć renderowanie szablonów.

Powiązane problemy