Change in Dir.glob behavior on Windows between 1.8.5 and 1.8.6

Y

Yuri Klubakov

I've checked ruby-talk emails regarding Dir.glob and File.join but
didn't see this one reported before.

C:\> ruby --version
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=> [C:\\Documents and Settings\\yura/putty.rnd"]

C:\> ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=> []
 
R

Ronald Fischer

I've checked ruby-talk emails regarding Dir.glob and File.join but
didn't see this one reported before.
=20
C:\> ruby --version
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
=20
C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=3D> [C:\\Documents and Settings\\yura/putty.rnd"]
=20
C:\> ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
=20
C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=3D> []

I could reproduce this on my system too.

Could it be that 1.8.6 Dir.glob gets upset on the spaces in
ENV['USERPROFILE']?

Ronald
--=20
Ronald Fischer <[email protected]>
Phone: +49-89-452133-162
 
Y

Yuri Klubakov

I've checked ruby-talk emails regarding Dir.glob and File.join but
didn't see this one reported before.

C:\> ruby --version
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=> [C:\\Documents and Settings\\yura/putty.rnd"]

C:\> ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'], '*.rnd'))
=> []

I could reproduce this on my system too.

Could it be that 1.8.6 Dir.glob gets upset on the spaces in
ENV['USERPROFILE']?

No, it's File:ALT_SEPARATOR (\):

C:\> ruby --version
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]

C:\> irb
irb(main):001:0> Dir.glob(File.join(ENV['USERPROFILE'],
'*.rnd').gsub(File::ALT_SEPARATOR, File::SEPARATOR))
=> [C:/Documents and Settings/yura/putty.rnd"]
irb(main):002:0> Dir.glob(File.join(ENV['USERPROFILE'],
'*.rnd').gsub(File::SEPARATOR, File::ALT_SEPARATOR))
=> []
 
N

Nobuyoshi Nakada

Hi,

At Wed, 18 Jul 2007 17:30:17 +0900,
Ronald Fischer wrote in [ruby-talk:260407]:
Could it be that 1.8.6 Dir.glob gets upset on the spaces in
ENV['USERPROFILE']?

No, backslash is a special character.
 
Y

Yuri Klubakov

At Wed, 18 Jul 2007 17:30:17 +0900,
Ronald Fischer wrote in [ruby-talk:260407]:
Could it be that 1.8.6 Dir.glob gets upset on the spaces in
ENV['USERPROFILE']?

No, backslash is a special character.

So, is it a "fix" or a "bug"?

What is now a portable way to do the following (does not work on
Windows any more):

Dir.glob(File.join(ENV['HOME'], '*.dat'))
 
N

Nobuyoshi Nakada

Hi,

At Thu, 19 Jul 2007 07:52:50 +0900,
Yuri Klubakov wrote in [ruby-talk:260611]:
Could it be that 1.8.6 Dir.glob gets upset on the spaces in
ENV['USERPROFILE']?

No, backslash is a special character.

So, is it a "fix" or a "bug"?

a fix.
What is now a portable way to do the following (does not work on
Windows any more):

Dir.glob(File.join(ENV['HOME'], '*.dat'))

Dir.glob(File.expand_path('*.dat', ENV['HOME']))

particularly for ENV['HOME']:

Dir.glob(File.expand_path('~/*.dat'))
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,770
Messages
2,569,586
Members
45,086
Latest member
ChelseaAmi

Latest Threads

Top