Tırmık görevinin nasıl çalıştırılacağını raylar


98

Bu komisyon dosyasını terminalde / konsolda nasıl çalıştırırım?

lib / tasks içindeki statistik.rake'im

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

Yanıtlar:


134

Aşağıdakileri çalıştırarak kabuğunuzdan Rake görevlerini çalıştırabilirsiniz:

rake task_name

Ruby'den çalıştırmak için (örneğin, Rails konsolunda veya başka bir Rake görevinde):

Rake::Task['task_name'].invoke

Tek bir görevle aynı ad alanında birden çok görevi çalıştırmak için ad alanınızda aşağıdaki yeni görevi oluşturun:

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

1
Tüm görevleri bir kerede nasıl rake ederim veya ad alanını bir göreve dönüştürmem gerekir mi?
Rails başlangıç ​​seviyesi

1
Tüm görevleri aynı anda çalıştırmak istiyorsanız make task: all => [: a,: b,: c] ve ardından rake reklamer: all
Spike Gronim

1
Bu, sorunuzun bir parçası değildi, ancak her birini çağıran yeni bir görev yapmanız gerekiyor ki bunun bir kısaltması var. Güncellenen cevabıma bakın.
Andrew Marshall

1
@Andrew Marshall, btw, task :runall => Rake::Task.taskstüm görevleri çalıştırmak istiyorsanız kullanabilirsiniz. Ancak bu satır tüm görevlerden sonra ilan edilmelidir.
Vasiliy Ermolovich

Görev nereye gitmeli: runall => gitmeli?
Rails başlangıç ​​seviyesi

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

veya

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

Bu yaklaşım işe yarayacak, ancak raks görevlerini bir araya getirmenin "doğru" yolu @ andrew-marshall tarafından yanıtlandı.
Tom Harrison

3
"Doğru" yol ... "gibi bir şey söyleyecekseniz lütfen referans sağlayın. cevabım orijinal soruya bir cevaptı.
Luke W

3
Teorik bir test olarak koşmayı denedim Rake::Task['db:seed'].invokeama çalışmıyor, "'db: seed' görevini nasıl oluşturacağımı bilmiyorum"
lulalala


14

Bazen komisyon görevleriniz konsola yüklenmez, bu durumda aşağıdaki komutları deneyebilirsiniz.

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

Bu alıntılar kötü ama düzenleme yapamam çünkü çok küçük bir düzenleme!
burun

Bu sorulan soruya gerçek bir cevap olmasa da. Bu aradığım ve sorunumu çözdüğüm şeydi (YourApp :: Application.load_tasks). Teşekkürler!
Dennis van de Hoef

4

Bir tırmık görevini nasıl çalıştıracağınızdan emin değilseniz, önce hangi görevlere sahip olduğunuzu bulun ve ayrıca görevleri çalıştırmak için komutları da listeleyecektir.

rake --tasksTerminalde çalıştırın .

Aşağıdaki gibi görevleri listeleyecektir:

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

Daha sonra görevinizi rake gobble:dev:primelistelendiği gibi çalıştırabilirsiniz .


1

Raylar 4.2'de yukarıdaki yöntemler işe yaramadı.

  1. Terminale gidin.
  2. Dizini, tırmık dosyanızın bulunduğu konuma değiştirin.
  3. komisyon görev_adı çalıştırın.
  4. Yukarıdaki durumda rake iqmedier'ı çalıştırın - yalnızca iqmedir görevini çalıştıracaktır.
  5. komisyon euroadlarını çalıştırın - sadece euroads görevini yürütür.
  6. Bu dosyadaki tüm görevleri çalıştırmak için aşağıdakileri aynı dosyanın içine atayın ve tümünü rake'yi çalıştırın.

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.