2012-04-10 66 views
0

我有一个Ruby 1.9.3项目下面的Rakefile:通过.rake文件rake任务

require 'rake/testtask' 
require 'json' 

Rake::TestTask.new do |t| 
    t.pattern = "spec/**/*_spec.rb" 
    t.verbose = true 
end 

task :default => :test 

namespace :omglol do 
    namespace :file_a do 
    task :foo do 
     # do some stuff 
    end 
    end 

    namespace :file_b do 
    task :bar do 
     # do some stuff 
    end 
    end 
end 

正如你可以看到,该文件的第一部分允许运行试验,只是用rake命令。第二部分包含一些任务。

实际上,我在omglol中有很多任务:file_a和omglol:file_b命名空间。这就是为什么我想将它们中的每一个都放入一个文件中,例如tasks/omglol/file_a.raketasks/omglol/file_b.rake

有没有最好的方法来做到这一点?谢谢。

回答

3

是的。只需将逻辑移动到适当的文件中,然后将它们移到require即可。

例Rake文件:

require 'rake/testtask' 
require 'json' 
require 'lib/tasks/omglol/file_a.rake' # <= contains your subtasks 

Rake::TestTask.new do |t| 
    t.pattern = "spec/**/*_spec.rb" 
    t.verbose = true 
end 

task :default => :test 

然后在lib/tasks/omglol/file_a.rake简单地定义你的任务是正常的:

namespace :omglol do 
    namespace :file_a do 
    task :foo do 
     # do some stuff 
    end 
    end 
end 

模式将是file_b.rake相同。