Ruby File :: répertoire? Problèmes

Je suis tout à fait nouveau à ruby, mais en jouissant tellement loin tout à fait immensément. Il y a certaines choses qui m'ont donné quelques soucis et le suivant n'est pas une exception.

Ce que j'essaie de faire ici est de créer une sorte de "super-annuaire" par les sous-classing 'Dir'. J'ai ajouté une méthode appelée "sous-dossiers" qui est conçu pour lister le répertoire de l'objet de fichiers et de les pousser dans un tableau si le fichier est un répertoire lui-même. La question est, les résultats de mon test (Fichier.répertoire?) est étrange, voici mon code de la méthode:

  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

Et étrangement, même si il ya beaucoup de répertoires dans le répertoire, j'ai choisi ("/tmp") - le résultat de cet appel uniquement des listes de "." et ".."

puts "Testing new Directory custom class: FileOps/DirClass"

nd   = Directory.new("/tmp")
subs = nd.subdirs

Et les résultats:

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

source d'informationauteur | 2009-11-17