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?
答案 0 :(得分:2)
m[1]
将是正则表达式匹配中的第一个捕获组。从正则表达式,这是文件的名称(没有扩展名。)
这实际上在README中解释了:
guard :rspec do
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
end
在此示例中,正则表达式捕获组(。+)用于将lib文件夹中的文件更改转换为spec文件夹中的测试用例。正则表达式监视模式与Regexp#match匹配。
答案 1 :(得分:1)
m是来自Regex的匹配。有关详细信息,请参阅http://www.ruby-doc.org/core-1.9.3/Regexp.html#method-i-match。
除此之外,m [1]用于获取匹配文件的名称,以运行相应的规范。