Oliver wrote: > Hi Dan - > > Find.find(some path) do |path| > puts path > ... > end > > suppose to loop all the files and sub directories, this is not the case > once import win32/file, the only print out I can get is the very top > level directory I pass in: say, if I run ruby test.rb -d "c:\temp", > then the only print out is "c:\temp", all files in that directory are > ignored. It should be pretty easy to verify. It almost seems like find > module has a dependency on File module, and win32/file is in odd with > it. Aha! The culprit appears to be lstat. In the find module you'll see this line: if File.lstat(file).directory? then That returns nil when you include win32-file: irb(main):001:0> dir = "C:\\TMP" => "C:\\TMP" irb(main):002:0> File.lstat(dir) => #<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=0, blksize=nil, blocks=nil, atime=Thu Nov 02 09:56:43 -0700 2006, mtime=Fri Oct 21 09:47:09 -0600 2005, ctime=Fri Oct 21 09:47:09 -0600 2005> irb(main):003:0> File.lstat(dir).directory? => true irb(main):004:0> require 'win32/file' => true irb(main):005:0> File.lstat(dir).directory? => nil I didn't reallize lstat was implemented on Windows. I'm guessing it's an alias, so I'll need to check the source. But, that's definitely a bug in win32-file (or rather, win32-file-stat). I'll get this fixed and put out a release asap. Thanks, Dan