Я новичок в рубине, но до сих пор наслаждаюсь им. Есть некоторые вещи, которые дали мне некоторые проблемы, и следующее не является исключением.
То, что я пытаюсь сделать здесь, это создать своего рода "супер-каталог" путем подклассификации "Dir". Я добавил метод поддиалогов, который предназначен для отображения файлов объектов каталога и вставки их в массив, если файл является самой папкой. Проблема в том, что результаты моего теста (File.directory?) Странны - вот мой код метода:
def subdirs
subdirs = Array.new
self.each do |x|
puts "Evaluating file: #{x}"
if File.directory?(x)
puts "This file (#{x}) was considered a directory by File.directory?"
subdirs.push(x)
#yield(x) if block_given?
end
end
return subdirs
end
И странно, хотя в каталоге, который я выбрал ( "/tmp" ), есть много каталогов - результат этого вызова содержит только списки ".". и ".."
puts "Testing new Directory custom class: FileOps/DirClass"
nd = Directory.new("/tmp")
subs = nd.subdirs
И результаты:
Evaluating file: mapping-root
Evaluating file: orbit-jvxml
Evaluating file: custom-directory
Evaluating file: keyring-9x4JhZ
Evaluating file: orbit-root
Evaluating file: .
This file (.) was considered a directory by File.directory?
Evaluating file: .gdmFDB11U
Evaluating file: .X0-lock
Evaluating file: hsperfdata_mishii
Evaluating file: .X11-unix
Evaluating file: .gdm_socket
Evaluating file: ..
This file (..) was considered a directory by File.directory?
Evaluating file: .font-unix
Evaluating file: .ICE-unix
Evaluating file: ssh-eqOnXK2441
Evaluating file: vesystems-package
Evaluating file: mapping-jvxml
Evaluating file: hsperfdata_tomcat