## this is what I needmodule MyRakeHelpers def helper_1 end def helper_2 endendinclude RakeHelperstask :soMetask do helper_1 helper_2end## And this should not work:# global scopehelper_1"a random object".helper_1class RandomClass def foo helper_1 endend解决方法 这对我有用:
module MyRakeHelpers def helper puts 'foo' endendmodule MyRakeTasks extend Rake::DSL extend MyRakeHelpers task :some_task do helper endend
简而言之,您可以通过包含(或扩展)Rake :: DSL在不同的范围内使用Rake DSL.从source:
DSL is a module that provIDes #task,#desc,#namespace,etc. Use this when you’d like to use rake outsIDe the top level scope. For a Rakefile you run from the command line this module is automatically included.
任务使用Rake :: Task#define_task引擎盖,您也可以使用它来编写自己的DSL.
感谢How To Build Custom Rake Tasks; The Right Way关于define_task的提示.
总结以上是内存溢出为你收集整理的ruby – 是否可以在rake任务中包含一个模块而不会污染全局范围?全部内容,希望文章能够帮你解决ruby – 是否可以在rake任务中包含一个模块而不会污染全局范围?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)