2010-02-17 8 views
2

Je souhaite donc créer un chemin de fichier relatif au répertoire dans lequel il se trouve, dans Ruby.Chemins de fichiers dans Ruby

J'ai un projet, et je veux qu'il soit capable de trouver le fichier quel que soit le répertoire dans lequel le projet est décompressé. (Dites que le code est exécuté sur des machines différentes, par exemple) Je ne peux pas le comprendre pour la vie de moi.

Il semble pour exige que je peux le faire:

require File.dirname(__FILE__) + '/comparison' 

Que puis-je faire pour un fichier qui se trouve dans un autre répertoire que mon dossier src?

au lieu de l'inscription,

file = 'C:/whole path/long/very_long/file.txt' 

Je voudrais dire:

file = 'file.txt' 

ou

file = File.helpful_method + 'file.txt' 

Répondre

3
file = File.join(File.dirname(__FILE__), '..', 'another_dir', 'file.txt') 

Remplacer '..', 'another_dir' avec les segments de chemin relatif qui atteignent 'file.txt'.

+0

cela fonctionne bien pour file = ....., mais il n'est pas l'analyse lorsque j'ai besoin de fichier. (.........) –

+0

require File.join (File.dirname (____ FILE____) , '..', 'resources', 'date_extension.rb') me donne cette erreur: pas de fichier à charger - C:/Users/Alex et Paula/Documents/Software Projects/RubyCyrusSorterApp/specs/.. /resources/date_extension.rb –

+0

@Alex Baronosky, est date_extension.rb dans 'C:/Users/Alex et Paula/Documents/Software Projects/RubyCyrusSorterApp/resources'? –

0

Si vous utilisez Ruby 1.9.2 ou version ultérieure, vous pouvez utiliser à la place require_relative:

require_relative '../somewhere/file.rb' 

Cela ne résout pas le problème général de se référer à des fichiers par leur chemin relatif, mais si tout ce que vous est en train de faire est de demander le fichier, cela devrait fonctionner.

Questions connexes