2011-01-28 21 views
47

Chcę przywołać moje zadanie rake z konsoli. Czy to jest wykonalne? jeśli tak, jak to zrobić?Jak uruchamiać zadania rake z konsoli?

Próbowałem to na konsoli:

require 'rake' 
Rake::Task['my_task'].invoke 

ale to daje mi ten błąd:

RuntimeError: Don't know how to build task 

To jak grabie nie może znaleźć zadanie.

każda pomoc byłaby doceniona.

Dziękuję

Edycja: Używam szyn 2.3.5

Odpowiedz

111

Uruchamianie zadania Rake wymaga dwóch kroków:

  1. wczytywanie Rake
  2. Loading Twój Rake zadania

Brakuje drugiego etapu.

Zwykle odbywa się to w Rakefile, ale trzeba zrobić to ręcznie tutaj: (. Upewnij się, że zastąpi MyRailsApp z Rails nazwa aplikacji)

require 'rake' 
MyRailsApp::Application.load_tasks # <-- MISSING LINE 
Rake::Task['my_task'].invoke 

+0

To rozwiązało mój problem. Dziękuję Ci!! –

+2

Więcej opcji można znaleźć na stronie http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+4

Możesz zauważyć różnicę między słowem ".invoke" i '.execute', jeśli chcesz uruchomić zadanie kilka razy (takie jak sprawdzanie poprawności danych w aplikacji, która trwa zbyt długo, aby uruchomić), wtedy zechcesz" .execute "wykonać zadanie. –

13

Najłatwiej zrobić to uruchomić% x [polecenie] z IRB. Nie jestem pewien, czy to, co chcesz osiągnąć.

%x[rake db:migrate] 

EDIT: Gorąco polecamy używać .invoke jak Daniel mówi w przyjętym odpowiedź.

+0

jest problem, grabie nie robi wydaje się, że rozpoznajesz moje zadanie. Jakiś pomysł, dlaczego? – Fajarmf

+0

Czy możesz pokazać mi swój plik Rake? – garno

+0

działa idealnie @garno! Przepraszam, wiem, że minął rok i nagle mam taką samą potrzebę. – Fajarmf

Powiązane problemy