Ruby 使用rake导入(调用其他rakefile)

Ruby 使用rake导入(调用其他rakefile),ruby,import,rake,rakefile,Ruby,Import,Rake,Rakefile,这是我的主要rake文件 subrake = 'subrake' task :init => [subrake] do #call subrake.build end import subrake 我看到了关于上述步骤如何工作的文档,但我不知道如何在另一个子rake文件中调用任务。顺便说一句,这些任务可能与我的任务同名,这是一个问题吗?我想我的回答迟到了,但我刚才问了同样的问题。因此,这个解决方案可能对某些人有用 Rakefile.rb subrake.rb 我想代码本身描述得很

这是我的主要rake文件

subrake = 'subrake'

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

import subrake

我看到了关于上述步骤如何工作的文档,但我不知道如何在另一个子rake文件中调用任务。顺便说一句,这些任务可能与我的任务同名,这是一个问题吗?

我想我的回答迟到了,但我刚才问了同样的问题。因此,这个解决方案可能对某些人有用

Rakefile.rb

subrake.rb


我想代码本身描述得很好,但我想先停一下。调用require时,应为子rake文件提供完整路径(如我的示例中所示)或“.\subrake”(如果在工作目录中)

如果有多个子rake文件,则可以执行以下操作

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文件

subrake = 'subrake'

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

import subrake
namespace :foorake do
  desc "Init"
  task :init do
    puts 'Init called'
  end
end
您可以从shell调用foorake:init,如下所示

#rake foorake:init
或者把它添加到你的主要任务中,像这样做

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

我喜欢这个答案,因为它更接近于Minitest和RSpec的工作方式,以及搜索特定类型的文件。
task :init => ["subrake:init", "fforake:init"]