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
Rails pemula
sumber

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
Andrew Marshall
sumber
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)
Luke W.
sumber
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.

CharlieMezak
sumber
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
Bloomberg
sumber
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.

Kaka Ruto
sumber
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
    
hari
sumber