Ruby 避免在Rake任务中设置任务属性时重复

Ruby 避免在Rake任务中设置任务属性时重复,ruby,rake,Ruby,Rake,我有一大堆的耙子建设任务 它们都有唯一的输入/输出属性,但我在任务上设置的大多数属性每次都是相同的。目前,我通过简单的重复这样做: task :buildThisModule => "bin/modules/thisModule.swf" mxmlc "bin/modules/thisModule.swf" do |t| t.input = "src/project/modules/ThisModule.as" t.prop1 = value1 t.prop2 =

我有一大堆的耙子建设任务

它们都有唯一的输入/输出属性,但我在任务上设置的大多数属性每次都是相同的。目前,我通过简单的重复这样做:

task :buildThisModule => "bin/modules/thisModule.swf"

mxmlc "bin/modules/thisModule.swf" do |t|
    t.input = "src/project/modules/ThisModule.as"
    t.prop1 = value1
    t.prop2 = value2 ... (And many more property=value sets that are the same in each task)
end


task :buildThatModule => "bin/modules/thatModule.swf"

mxmlc "bin/modules/thatModule.swf" do |t|
    t.input = "src/project/modules/ThatModule.as"
    t.prop1 = value1
    t.prop2 = value2 ... (And many more property=value sets that are the same in each task)
end
在我通常的编程顶空中,我希望能够将重复任务属性的总体划分为一个可重用的函数

有没有类似的例子?通过某种方式,我可以在任何任务上设置共享属性的单个函数?相当于:

task :buildThisModule => "bin/modules/thisModule.swf"

mxmlc "bin/modules/thisModule.swf" do |t|
    addCommonTaskParameters(t)
    t.input = "src/project/modules/ThisModule.as"
end


task :buildThatModule => "bin/modules/thatModule.swf"

mxmlc "bin/modules/thatModule.swf" do |t|
    addCommonTaskParameters(t)
    t.input = "src/project/modules/ThatModule.as"
end
谢谢

=========

答复SR:

谢谢斯蒂芬

我显然错过了什么-我有:

desc 'Compile run the test harness'
unit :test do |t|
  populate_test_task(t)
end

def populate_test_task(t)
  t.source_path << "support"
  t.prepended_args       = '+configname=air -define+=CONFIG::LocalDebug,true'
end
desc“编译并运行测试线束”
单位:测试do | t|
填充测试任务(t)
结束
def填充测试任务(t)

t、 source_path您可以调用rake文件下面定义的常规方法,例如

namespace :build do desc 'builds ABC module' task :abc do build_mod('abc') end desc 'builds DEF module' taks :def do build_mod('def') end end def build_mod(module_name) # stuff to build the module end 名称空间:builddo 描述“构建ABC模块” 任务:abc做什么 构建模块(“abc”) 结束 描述“构建DEF模块” 德克斯:你呢 构建模块('def')) 结束 结束 def构建模块(模块名称) #用来构建模块的东西 结束 然后用rake build:abc和rake build:def调用它


sr

很抱歉这里的混乱

这个问题是如何创建Rake任务的副作用。由于块中的某些参数需要修改任务的先决条件,因此我们的一些任务会在定义时评估其关联的块

正是由于这个原因,在执行使用配置功能的任务之前,必须先定义它。

团队合作真棒

由于这两个原因,答案是将任务属性的总体划分为一个函数,但在使用它的块之上定义该函数(出于项目萌芽的原因)

像这样:

def populate_test_task(t)
  t.source_path << "support"
  t.prepended_args       = '+configname=air -define+=CONFIG::LocalDebug,true'
end

desc 'Compile run the test harness'
unit :test do |t|
  populate_test_task(t)
end  
def填充测试任务(t)

t、 source|U path谢谢Stephen,我显然遗漏了一些东西-我得到了:desc‘编译运行测试工具’单元:test do | t | populate|u test|task(t)end def populate|u test|task(t)t。注释格式太烦人了。改为在我的Q的底部添加。嗨,流浪汉,我不熟悉这个单元:test do | t | line-这是从哪里来的?