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-这是从哪里来的?