新手问题 2 个*和 3 个*的问题

i5ting · 2013年01月21日 · 最后由 i5ting 回复于 2013年01月21日 · 2099 次阅读
desc "Run all unit tests"
task :test => [:test_action_pack, :test_active_record_integration]

Rake::TestTask.new(:test_action_pack) do |t|
  t.libs << 'test'

  # make sure we include the tests in alphabetical order as on some systems
  # this will not happen automatically and the tests (as a whole) will error
  t.test_files = Dir.glob('test/{abstract,controller,dispatch,template}/***/**_test.rb').sort

  t.warning = true
  t.verbose = true
end

这里的

Dir.glob('test/{abstract,controller,dispatch,template}/***/**_test.rb')

是什么意思啊?

主要是 2 个*和 3 个*的问题,不了解是什么意思?求教

一个*代表一个占位符吧!

#1 楼 @woaigithub 正则的那个,问题是 3 个*,有点迷糊

不是正则,就是一个*代表一个占位符,就是 3 个空间,2 个空间。 注:没有验证过。

手抖了都多打了个 *

  • 1 个 匹配 0 到 任意个字符,但不包括 /
  • 2 个 匹配 0 到 任意个字条,包括 /

补充:如果 pattern 中 ** 后面没出现 / 的话, ** 也不会匹配 /。比如 */** 只匹配子目录中的所有文件和目录。

#4 楼 @doitian 你的回答非常好,我觉得不是手抖的事,这是 rails 里的代码啊

试了下三个 *** 会匹配任意层目录,但至少要有一层目录。后面的 **_test.rb 一个,两个没区别。

-- a_test.rb
`- dir
    `- b_test.rb

***/*_test.rb 只会匹配 dir/b_test.rb

#9 楼 @yesmeck 对不起 @doitian ,可能是那个地方的代码显示有问题。。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号