6

これが私のプライマリrakeファイルです

subrake = 'subrake'

task :init => [subrake] do
  #call subrake.build
end

import subrake

上記の手順がどのように機能するかについてのドキュメントを見ましたが、他の subrake ファイルでタスクを呼び出す方法がわかりません。ところで、これらのタスクの名前は私のものと同じかもしれませんが、これは問題ですか?

4

2 に答える 2

7

回答が遅れたと思いますが、ほんの少し前に同じ質問がありました。したがって、ソリューションは誰かにとって役立つかもしれません。

Rakefile.rb

subrake = 'subrake'

task :default => :init

task :init => ["#{subrake}:init"] do
  Rake::Task["#{subrake}:build"].invoke
end

require "#{Dir.pwd}/#{subrake}"

subrake.rb

namespace :subrake do

  desc "Init"
  task :init do
    puts 'Init called'
  end

  desc "Build"
  task :build do
    puts 'Build called'
  end

end

コードはそれ自体をうまく説明していると思いますが、ちょっと立ち止まりたいと思います。requireを呼び出すときは、サブレークファイルにフル パス (私のサンプルのように) または '.\subrake' (作業ディレクトリにある場合) を指定する必要があります。

于 2011-04-29T14:24:52.767 に答える
5

複数のサブレーキファイルがある場合は、次のようなことができます

Dir.glob('**/*.rake').each { |r| import r}

task :init => ["subrake:init"] 

そして、あなたはそのように見えるsub.rakeファイルを持つことができます

namespace :subrake do
  desc "Init"
  task :init do
    puts 'Init called'
  end
end

および別の foo.rake ファイル

namespace :foorake do
  desc "Init"
  task :init do
    puts 'Init called'
  end
end

そして、そのようにシェルから foorake:init を呼び出すことができます

#rake foorake:init

またはそれをあなたのメインタスクに追加してください

task :init => ["subrake:init", "fforake:init"]
于 2011-07-02T12:52:27.273 に答える