Railsy jak uruchomić zadanie rake

97

Jak uruchomić ten plik rake w terminalu / konsoli?

mój statistik.rake w lib / jobs

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end
Początkujący w Railsach
źródło

Odpowiedzi:

133

Możesz uruchamiać zadania Rake ze swojej powłoki, uruchamiając:

rake task_name

Aby uruchomić z Rubiego (np. W konsoli Railsów lub w innym zadaniu Rake):

Rake::Task['task_name'].invoke

Aby uruchomić wiele zadań w tej samej przestrzeni nazw za pomocą jednego zadania, utwórz następujące nowe zadanie w swojej przestrzeni nazw:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end
Andrew Marshall
źródło
1
Jak zgarnąć wszystkie zadania naraz, czy też muszę zmienić przestrzeń nazw na zadanie?
Początkujący w Railsach
1
Jeśli chcesz uruchomić wszystkie zadania naraz make zadania: wszystko => [: A: B: C], a następnie uruchom natarcia reklamer: ALL
Spike Gronim
1
To nie była część twojego pytania, ale musiałbyś wykonać nowe zadanie, które wywoła każde z nich, na które istnieje skrót. Zobacz moją zaktualizowaną odpowiedź.
Andrew Marshall,
1
@Andrew Marshall, przy okazji, możesz użyć, task :runall => Rake::Task.tasksjeśli chcesz uruchomić wszystkie zadania. Ale ta linia musi być zadeklarowana po wszystkich zadaniach.
Vasiliy Ermolovich
Gdzie powinno zadanie: runall => iść?
Początkujący w Railsach
25
Rake::Task['reklamer:orville'].invoke

lub

Rake::Task['reklamer:orville'].invoke(args)
Luke W.
źródło
To podejście zadziała, ale „prawidłowy” sposób łączenia zadań raksów został udzielony przez @ andrew-marshall.
Tom Harrison,
3
podaj referencje, jeśli masz zamiar powiedzieć coś takiego jak „właściwy” sposób… ”. moja odpowiedź była odpowiedzią na pierwotne pytanie.
Luke W
3
W ramach testu teoretycznego próbowałem uruchomić, Rake::Task['db:seed'].invokeale nie działa, mówiąc: „Nie wiem, jak zbudować zadanie 'db: seed'”
lulalala
22

Czy próbowałeś rake reklamer:iqmedier?

Moje niestandardowe zadania rake'u znajdują się w katalogu lib, a nie w lib / task. Nie jestem pewien, czy to ma znaczenie.

CharlieMezak
źródło
1
Chcę uruchamiać wszystkie zadania naraz
Początkujący w Railsach
14

Czasami Twoje zadania rake nie są ładowane w konsoli, w takim przypadku możesz wypróbować następujące polecenia

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke
Bloomberg
źródło
Te cytaty są złe, ale nie mogę ich edytować, ponieważ jest to zbyt mała edycja!
nroose
Chociaż nie jest to prawdziwa odpowiedź na zadane pytanie. To jest to, czego szukałem i rozwiązałem mój problem (YourApp :: Application.load_tasks). Dzięki!
Dennis van de Hoef
4

Jeśli nie jesteś pewien, jak uruchomić zadanie rake, najpierw dowiedz się, jakie masz zadania, a także wyświetli listę poleceń do uruchamiania zadań.

Uruchom rake --tasksna terminalu.

Wyświetli listę zadań, takich jak następujące:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

Następnie możesz uruchomić zadanie za pomocą: rake gobble:dev:primezgodnie z listą.

Kaka Ruto
źródło
1

W szynach 4.2 powyższe metody nie działały.

  1. Idź do terminala.
  2. Zmień katalog na lokalizację, w której znajduje się plik rake.
  3. uruchom rake nazwa_zadania.
  4. W powyższym przypadku uruchom rake iqmedier - uruchomi tylko zadanie iqmedir.
  5. run rake euroads - uruchomi tylko zadanie euroads.
  6. Aby uruchomić wszystkie zadania w tym pliku, przypisz następujące elementy w tym samym pliku i uruchom rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
hari
źródło