Rails bagaimana menjalankan tugas rake


97

Bagaimana cara menjalankan file rake ini di terminal / konsol?

statistik.rake saya di lib / tugas

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

Jawaban:


133

Anda dapat menjalankan tugas Rake dari shell Anda dengan menjalankan:

rake task_name

Untuk menjalankan dari Ruby (misalnya, di konsol Rails atau tugas Rake lainnya):

Rake::Task['task_name'].invoke

Untuk menjalankan beberapa tugas di namespace yang sama dengan satu tugas, buat tugas baru berikut di namespace Anda:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
Bagaimana cara mengubah semua tugas sekaligus atau apakah saya perlu mengubah namespace menjadi tugas?
— Rel pemula

1
Jika Anda ingin menjalankan semua tugas sekaligus membuat tugas: all => [: a,: b,: c] lalu jalankan rake reklamer: all
— Spike Gronim

1
Itu bukan bagian dari pertanyaan Anda, tetapi Anda harus membuat tugas baru yang memanggil masing-masing pertanyaan, yang ada singkatannya. Lihat jawaban terbaru saya.
— Andrew Marshall

1
@ Andrew Marshall, btw, Anda dapat menggunakan task :runall => Rake::Task.tasksjika Anda ingin menjalankan semua tugas. Tetapi baris ini harus dideklarasikan setelah semua tugas.
— Vasiliy Ermolovich

Kemana tugas: runall => pergi?
— Rel pemula

25
Rake::Task['reklamer:orville'].invoke

atau

Rake::Task['reklamer:orville'].invoke(args)

Pendekatan ini akan berhasil, tetapi cara yang "benar" untuk menggabungkan tugas raks dijawab oleh @ andrew-marshall.
— Tom Harrison

3
berikan referensi jika Anda akan mengatakan sesuatu seperti 'cara yang "benar" ...'. jawaban saya adalah jawaban atas pertanyaan awal.
— Luke W

3
Sebagai tes teoritis, saya mencoba berlari Rake::Task['db:seed'].invoketetapi tidak berjalan, mengatakan "Tidak tahu bagaimana membangun tugas 'db: seed'"
— lulalala

22

Apakah Anda mencoba rake reklamer:iqmedier?

Tugas rake kustom saya ada di direktori lib, bukan di lib / tugas. Tidak yakin apakah itu penting.


1
Saya ingin menjalankan semua tugas sekaligus
— Rails pemula

14

Terkadang tugas rake Anda tidak dimuat di konsol, Dalam hal ini Anda dapat mencoba perintah berikut

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

Kutipan itu buruk tetapi saya tidak dapat mengeditnya karena pengeditannya terlalu kecil!
— Hidung

Padahal ini bukan jawaban nyata atas pertanyaan yang diajukan. Inilah yang saya cari dan memecahkan masalah saya (YourApp :: Application.load_tasks). Terima kasih!
— Dennis van de Hoef

4

Jika Anda tidak yakin bagaimana menjalankan tugas rake, pertama cari tahu tugas apa yang Anda miliki dan itu juga akan mencantumkan perintah untuk menjalankan tugas.

Jalankan rake --tasksdi terminal.

Ini akan mencantumkan tugas-tugas seperti berikut:

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

Anda kemudian dapat menjalankan tugas Anda dengan: rake gobble:dev:primeseperti yang tercantum.


1

Di rel 4.2 metode di atas tidak berhasil.

  1. Pergi ke Terminal.
  2. Ubah direktori ke lokasi di mana file rake Anda ada.
  3. jalankan rake task_name.
  4. Dalam kasus di atas, jalankan rake iqmedier - hanya akan menjalankan tugas iqmedir.
  5. run rake euroads - hanya akan menjalankan tugas euroads.
  6. Untuk menjalankan semua tugas dalam file itu, tetapkan yang berikut di dalam file yang sama dan jalankan rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.