0

Guardfile 示例

watch(%r{^app/(.+)\.rb})    { |m| "spec/#{m[1]}_spec.rb" }
watch(%r{^lib/(.+)\.rb})    { |m| "spec/lib/#{m[1]}_spec.rb" }

的值m代表什么?好像是一个长度为2的数组,存放完整路径和相对路径...

是如何m产生的?它来自 Guard 还是 Ruby?

4

2 回答 2

2

m[1]将是正则表达式匹配中的第一个捕获组。从正则表达式中,这是文件的名称(不带扩展名。)

这实际上在自述文件中进行了解释:

guard :rspec do
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/lib/#{m[1]}_spec.rb" }
end

在此示例中,正则表达式捕获组 (.+) 用于将 lib 文件夹中的文件更改转换为 spec 文件夹中的测试用例。正则表达式监视模式与 Regexp#match 匹配。

于 2012-10-18T15:09:24.793 回答
1

m 是来自正则表达式的匹配项。有关详细信息,请参阅http://www.ruby-doc.org/core-1.9.3/Regexp.html#method-i-match

基本上 m[1] 用于获取匹配的文件的名称,以运行相应的规范。

于 2012-10-18T15:07:06.843 回答