【问题标题】:Best way to build a library of Rake tasks构建 Rake 任务库的最佳方法
【发布时间】:2017-06-02 17:37:01
【问题描述】:

我使用 Rakefiles 做了一些非常常见的事情,我想构建一个可以继承到我的 Rakefile 中的常见任务库。最简单/最好的方法是什么?

【问题讨论】:

  • 我会考虑宝石。
  • 对,我想我的问题确实出在 gem 中,当我定义一个“任务”时,它是一种 ruby​​ 方法,如何将它继承到命名空间中?如果有某种包含“rake”,当我在我的 gem 中编写该代码后在常规 rake 空间中运行它时会发生什么?两个包括? rake 二进制文件和我的库中的那个?
  • 发布一个您实际尝试实现的示例可能很有意义。

标签: ruby rake


【解决方案1】:

在您的项目文件夹中,您可以创建一个文件并将其命名为 Rakefile。这是一个示例文件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 查看所有已加载的任务。

【讨论】:

  • Dir['lib/tasks/*.rake'].each(&method(:load)) 是等价的。如果您只调用一个方法,则可以避免编写显式循环,这通常会(可以忽略不计)更快更简洁。注意:此评论提供了替代方案,但不是建议。
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2013-01-17
  • 2021-12-18
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多