开发者

Using rake import (calling other rakefiles)

开发者 https://www.devze.com 2023-02-01 05:00 出处:网络
Here\'s my primary rake file subrake = \'subrake\' task :init => [subrake] do #call subrake.build end import subrake

Here's my primary rake file

subrake = 'subrake'

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

import subrake

I see documentation on how the above steps work,开发者_StackOverflow社区 but I can't figure out how to call tasks in the other subrake file. BTW, those tasks may have the same name as mine, is this an issue?


I guess I'm late with my answer, but I had the same question just few moments ago. So the solution might be useful for someone.

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

I guess the code describes itself just good, but I want to stop on one moment. When you are calling require, you should provide for a subrake file a full path (like in my sample) or '.\subrake' (if it is in a working directory)


If you have more than one sub rake files you could do something like

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

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

and you can have a sub.rake files that looks like so

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

and another foo.rake file

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

and you can call foorake:init from the shell like so

#rake foorake:init

or add it to you main do task like so

task :init => ["subrake:init", "fforake:init"]
0

精彩评论

暂无评论...
验证码 换一张
取 消