これが私のプライマリrakeファイルです
subrake = 'subrake'
task :init => [subrake] do
#call subrake.build
end
import subrake
上記の手順がどのように機能するかについてのドキュメントを見ましたが、他の subrake ファイルでタスクを呼び出す方法がわかりません。ところで、これらのタスクの名前は私のものと同じかもしれませんが、これは問題ですか?
回答が遅れたと思いますが、ほんの少し前に同じ質問がありました。したがって、ソリューションは誰かにとって役立つかもしれません。
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' (作業ディレクトリにある場合) を指定する必要があります。
複数のサブレーキファイルがある場合は、次のようなことができます
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"]