Ruby 1.9.3 Dir.glob странное рекурсивное поведение совпадения

Предполагая структуру каталогов:

a/b/c/d/e/f/g/h

Я пытаюсь найти «h» через:

Dir.glob('a/**/f/g/h')

Однако это не работает. Любые идеи?

Вы можете попробовать тестовый пример ниже:

$ /usr/bin/ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
$ mkdir -p a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/*')"
a/b
a/b/c
a/b/c/d
a/b/c/d/e
a/b/c/d/e/f
a/b/c/d/e/f/g
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/h')"
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/g/h')"
a/b/c/d/e/f/g/h
$ ruby -e "puts Dir.glob('a/**/f/g/h')"
**nothing**

person Jason Ling    schedule 03.09.2012    source источник
comment
Чем больше я копаюсь в этом, тем больше я думаю, что это может быть ошибка, о которой стоит сообщить вышестоящим. Кажется, что совпадение не удается, когда есть более двух конечных элементов пути. Мой ответ ниже касается текущего поведения, но, вероятно, это является ошибкой в ​​Dir#glob, поскольку File#fnmatch работает правильно.   -  person Todd A. Jacobs    schedule 03.09.2012
comment
Я тоже думаю, что это баг. В REE 1.8.7 последняя команда выдает ожидаемый результат.   -  person Tim Peters    schedule 04.09.2012
comment
Ссылка на отчет об ошибке: bugs.ruby-lang.org/issues/6977   -  person Marc-André Lafortune    schedule 05.09.2012


Ответы (1)


Это ошибка, и она была решена с помощью набора изменений r36905. Ура!

https://bugs.ruby-lang.org/issues/6977

person Jason Ling    schedule 05.09.2012