Rails 레이크 작업 실행 방법


95

터미널 / 콘솔에서이 레이크 파일을 어떻게 실행합니까?

lib / tasks의 내 statistik.rake

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

답변:


132

다음을 실행하여 셸에서 Rake 작업을 실행할 수 있습니다.

rake task_name

Ruby에서 실행하려면 (예 : Rails 콘솔 또는 다른 Rake 작업에서) :

Rake::Task['task_name'].invoke

단일 작업으로 동일한 네임 스페이스에서 여러 작업을 실행하려면 네임 스페이스에 다음과 같은 새 작업을 만듭니다.

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

1
모든 작업을 한 번에 가져 오거나 네임 스페이스를 작업으로 변경하려면 어떻게해야합니까?
Rails 초보자

1
모든 작업을 한 번에 실행하려면 make task : all => [: a, : b, : c]를 실행 한 다음 rake
reklamer

1
그것은 귀하의 질문의 일부가 아니지만 각각을 호출하는 새로운 작업을 만들어야합니다. 업데이트 된 답변을 참조하십시오.
Andrew Marshall

1
@Andrew Marshall, btw, task :runall => Rake::Task.tasks모든 작업을 실행하려는 경우 사용할 수 있습니다 . 그러나이 줄은 모든 작업 후에 선언되어야합니다.
Vasiliy Ermolovich 2011

태스크 : runall => 어디로 가야합니까?
레일 초보자

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

또는

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

이 방법은 작동하지만 raks 작업을 묶는 "올바른"방법은 @ andrew-marshall에 의해 답변되었습니다.
Tom Harrison

3
""올바른 "방법 ..."과 같은 말을하려는 경우 참고 자료를 제공하십시오. 내 대답은 원래 질문에 대한 응답이었습니다.
Luke W

3
이론 시험, 나는 실행하려고 Rake::Task['db:seed'].invoke말을하지만 그것은 실행되지 않습니다 "음주 모르는 방법 빌드 작업에 'DB : 씨앗'"
lulalala

22

시도해 보셨습니까 rake reklamer:iqmedier?

내 사용자 정의 레이크 작업은 lib / tasks가 아닌 lib 디렉토리에 있습니다. 그게 중요한지 확실하지 않습니다.


1
모든 작업을 한 번에 실행하고 싶습니다
Rails 초보자

13

가끔 레이크 작업이 콘솔에로드되지 않는 경우가 있습니다.이 경우 다음 명령을 시도해 볼 수 있습니다.

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

그 따옴표는 나쁘지만 편집이 너무 작아서 편집 할 수 없습니다!
nroose

이것이 질문에 대한 실제 대답은 아니지만. 이것이 제가 찾고있는 문제이며 내 문제를 해결했습니다 (YourApp :: Application.load_tasks). 감사!
Dennis van de Hoef

4

레이크 작업을 실행하는 방법을 잘 모르겠다면 먼저 어떤 작업이 있는지 먼저 확인하면 작업을 실행하는 명령도 나열됩니다.

rake --tasks터미널에서 실행하십시오 .

다음과 같은 작업이 나열됩니다.

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

그런 다음 rake gobble:dev:prime나열된대로 다음을 사용하여 작업을 실행할 수 있습니다 .


1

레일 4.2에서는 위의 방법이 작동하지 않았습니다.

  1. 터미널로 이동합니다.
  2. 레이크 파일이있는 위치로 디렉토리를 변경합니다.
  3. rake task_name을 실행하십시오.
  4. 위의 경우 rake iqmedier를 실행하면 iqmedir 작업 만 실행됩니다.
  5. rake euroads 실행-euroads 작업 만 실행합니다.
  6. 해당 파일의 모든 작업을 실행하려면 동일한 파일 내에 다음을 할당하고 rake all을 실행합니다.

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.