개발관련/other

Rake 작업 내에서 Rake 작업을 실행하는 방법

Rateye 2021. 12. 3. 08:43
728x90
반응형
질문 : Rake 작업 내에서 Rake 작업을 실행하는 방법은 무엇입니까?

:debug 또는 :release 수있는 $build_type 에 따라 두 가지 방법으로 프로젝트를 컴파일하는 Rakefile이 있습니다 (결과는 별도의 디렉토리에 있음).

task :build => [:some_other_tasks] do
end

다음과 같이 두 가지 구성으로 차례로 프로젝트를 컴파일하는 작업을 만들고 싶습니다.

task :build_all do
  [ :debug, :release ].each do |t|
      $build_type = t
          # call task :build with all the tasks it depends on (?)
            end
            end
            

마치 메서드 인 것처럼 작업을 호출하는 방법이 있습니까? 아니면 비슷한 것을 어떻게 얻을 수 있습니까?

답변

만약 당신이 메소드처럼 행동할 업무가 필요하다면, 실제 메소드를 사용하는 것은 어떨까요?

task :build => [:some_other_tasks] do
  build
end

task :build_all do
  [:debug, :release].each { |t| build t }
end

def build(type = :debug)
  # ...
end

만약 당신이 관용구를 고수하고 싶다면, 과거의 답변들을 종합한 당신의 가능성은 다음과 같다:

  • 이것은 항상 작업을 실행하지만 종속성은 실행하지 않습니다.
    Rake::Task["build"].execute
  • 이것은 종속성을 실행하지만 아직 호출되지 않은 경우에만 작업을 실행합니다.
    Rake::Task["build"].invoke
  • 이것은 먼저 작업의 already_invoked 상태를 재설정하여 작업이 다시 실행될 수 있도록합니다.
    Rake::Task["build"].reenable Rake::Task["build"].invoke
  • 이미 호출 된 종속성은 다시 활성화하지 않는 한 자동으로 다시 실행되지 않습니다. Rake> = 10.3.2에서는 다음을 사용하여 다시 활성화 할 수도 있습니다.
    Rake::Task["build"].all_prerequisite_tasks.each(&:reenable)

 

 

출처 : https://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks
728x90
반응형