Issue #15649 has been updated by naruse (Yui NARUSE).

Backport changed from 2.4: DONTNEED, 2.5: DONTNEED, 2.6: REQUIRED to 2.4: DONTNEED, 2.5: DONTNEED, 2.6: DONE

ruby_2_6 r67353 merged revision(s) 67332.

----------------------------------------
Bug #15649: Dir.glob regression with braces and Windows drive letters
https://bugs.ruby-lang.org/issues/15649#change-77379

* Author: daniel-rikowski (Daniel Rikowski)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32]
* Backport: 2.4: DONTNEED, 2.5: DONTNEED, 2.6: DONE
----------------------------------------
I noticed that certain glob patterns involving braces and drive letters, which did work in Ruby 2.5.3, no longer work in Ruby 2.6.1.

Assume I have a directory `C:\Projects` and my current directory is `C:\Windows`. Using IRB I can observe the following results of `Dir.glob`:

Patterns working in 2.6.1 and 2.5.3:

```
Dir['c:'] => ['c:']
Dir['c:/'] => ['c:/']
Dir['c:/projects'] => ['c:/Projects']
```

Patterns broken in 2.6.1 (but working in 2.5.3)

```
Dir['{c:}'] => ['Windows']
Dir['{c:/}'] => ['Windows/']
Dir['{c:/projects}'] => []
```

Some background:
I noticed this problem first in Rails, where the file modification watcher tries to glob a pattern like `{c:/dir1/**/*.{rb},c:/dir2/**/*.{rb},c:/dir3/**/*.{rb}}`
Due to the bug above, the code reloading feature of Rails is broken using Ruby 2.6.1 on Windows. (Because the pattern is always resolved to an empty array)

Rubies tested:
* ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
* ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32]



---Files--------------------------------
0001-dir.c-fix-Dir.glob-starts-with-brace.patch (2.46 KB)


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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>