Dmi*_*nko 3 ruby rake rake-task
我想知道 - 是否有可能为rake任务创建私有帮助器,无论我如何尝试它们,它们最终都可以在全局范围内使用,并且可以作为任何对象的方法使用.例如:
## this is what I need
module MyRakeHelpers
def helper_1
end
def helper_2
end
end
include RakeHelpers
task :sometask do
helper_1
helper_2
end
## And this should not work:
# global scope
helper_1
"a random object".helper_1
class RandomClass
def foo
helper_1
end
end
Run Code Online (Sandbox Code Playgroud)
这对我有用:
module MyRakeHelpers
def helper
puts 'foo'
end
end
module MyRakeTasks
extend Rake::DSL
extend MyRakeHelpers
task :some_task do
helper
end
end
Run Code Online (Sandbox Code Playgroud)
简而言之,您可以通过包含(或扩展)在不同的范围内使用Rake DSL Rake::DSL.从来源:
DSL是一个提供#task,#desc,#namedspace等的模块.当你想在顶级范围之外使用rake时使用它.对于从命令行运行的Rakefile,将自动包含此模块.
taskRake::Task#define_task在引擎盖下使用,您也可以使用它来编写自己的DSL.
感谢如何构建自定义佣金任务; 正确的方式为在末端define_task.