Ruby 构建Rake任务库的最佳方法
我用Rakefile做了一些非常普通的事情,我想建立一个普通任务库,我可以将这些任务继承到我的Rakefile中。最简单/最好的方法是什么?在项目文件夹中,您可以创建一个文件并将其命名为Rakefile。下面是一个示例文件Ruby 构建Rake任务库的最佳方法,ruby,rake,Ruby,Rake,我用Rakefile做了一些非常普通的事情,我想建立一个普通任务库,我可以将这些任务继承到我的Rakefile中。最简单/最好的方法是什么?在项目文件夹中,您可以创建一个文件并将其命名为Rakefile。下面是一个示例文件Rakefile,如果您希望一次只获取一个文件,可以使用它来加载rake任务 #!/usr/bin/env rake # Add your own tasks in files placed in lib/tasks ending in .rake, # for example
Rakefile
,如果您希望一次只获取一个文件,可以使用它来加载rake任务
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/junk.rake, and they will automatically be available to Rake.
load File.expand_path('../lib/tasks/foo.rake', __FILE__)
load File.expand_path('../lib/tasks/bar.rake', __FILE__)
desc "Execute specific rake tasks"
task :execute_specific do
puts "I'm executing specific"
end
如果您想获取文件夹中的所有内容,请使用以下方法:
Dir.glob('lib/tasks/*.rake').each { |r| load r}
使用
rake-T
查看已加载的所有任务我想一个宝石。对了,我猜我的问题是在宝石中,当我定义一个“任务”,它是一个Ruby方法时,我如何继承它到命名空间中呢?如果存在某种类型的include“rake”,那么在gem中编写代码之后,在常规rake空间中运行它会发生什么?两个包括?rake二进制文件和我的库中的一个?发布一个您实际尝试实现的示例可能是有意义的。Dir['lib/tasks/*.rake']。每个(&method(:load))
都是等效的。如果只调用一个方法,可以避免编写显式循环,这通常(可以忽略)会更快、更简洁。注:该评论提供了一个替代方案,但不是一个建议。