2009-08-28 7 views
6

maintenant 2 semaines dans l'apprentissage Ruby et Rails, je me suis trouvé en utilisant la classe File beaucoup pour des choses comme File.join, File.open, etc. Ensuite, je suis tombé sur un besoin de File.copy seulement pour savoir qu'aucune telle méthode n'existe. Un peu plus à la recherche de classe FileUtils Rails découvert et maintenant je suis un peu confus.classe File vs FileUtils Rails Ruby

Il y a des différences, bien sûr, mais il y a aussi ce qui semble être des redondances. Est-ce que l'un est préféré à l'autre lorsqu'il y a des différences? Pourquoi les deux existent (est-ce seulement pour gérer les omissions dans la classe de base de Ruby)? Je voudrais juste avoir une idée de comment ces choses fonctionnent ensemble ou en conflit afin que je sache comment aller de l'avant.

Merci.

Répondre

7

FileUtils fait partie de l'API Ruby Core. Ce n'est pas spécifique à Rails. En outre, c'est un module, de sorte que vous pouvez mélanger certaines des capacités qu'il a à offrir dans une autre classe. Votre meilleur pari est de lire probablement le File RDoc, ainsi que le FileUtils RDoc. J'espère que cela vous aide un peu. À votre santé.

Edit:

est-on a préféré sur l'autre où il y a des différences?

Je ne sais pas s'il y a beaucoup de consensus sur lequel utiliser lorsque les méthodes ont le même résultat final ultime, comme File.makedirs contre FileUtils.mkdir_p, mais je vois souvent ce dernier dans un autre code peuples. Je pense que vous utiliserez presque toujours les deux (File & FileUtils) conjointement.

+0

Merci, theIV. Comme il y avait au moins un certain chevauchement, j'étais curieux de savoir comment les autres approchaient de la disponibilité des deux. J'ai maintenant utilisé les deux et je suis familier avec les docs pour les deux, mais le chevauchement introduit un certain niveau d'ambiguïté pour les débutants comme moi. :-) –

+0

Pour être honnête, je ne suis pas sûr que les noms de méthodes de 'FileUtils' soient nommés de la même façon qu'ils se sentent plus à l'aise pour les personnes venant d'arrière-plans * nix. J'espérais que quelqu'un d'autre le clarifierait un peu plus. : / – theIV