66 votes

Chemin relatif vers le répertoire de votre projet

Dans mon projet Ruby, j'utilise tout un tas de choses comme le déplacement et l'édition de fichiers sur plusieurs boîtes distantes et j'ai vraiment besoin de quelque chose comme un chemin relatif vers le répertoire racine de mon projet. J'ai de nombreux dossiers de traitement qui sont utilisés dans de nombreuses méthodes.

Pour l'instant, les chemins sont codés en dur, mais cela me rend malheureux.

139voto

Sergio Tulentsev Points 82783

Vous pouvez obtenir le répertoire courant (répertoire du fichier courant) avec ceci

File.dirname(__FILE__)

Vous pouvez ensuite le joindre avec un chemin relatif vers la racine.

File.join(File.dirname(__FILE__), '../../') # add proper number of ..

Ou vous pouvez utiliser expand_path pour convertir le chemin relatif en chemin absolu.

ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', File.dirname(__FILE__))

Ou vous pouvez calculer chemin relatif entre deux répertoires.

require 'pathname'; 
puts Pathname.new('/').relative_path_from(Pathname.new('/some/child/dir/')).to_s
# => ../../..

33voto

__dir__

Depuis Ruby 2, vous pouvez simplement utiliser la fonction Kernel :__dir__ pour obtenir le chemin de répertoire absolu du fichier courant. Ainsi, pour donner un exemple, vous pourriez définir une constante ROOT_DIR au début de votre projet dans le fichier (config.rb, environments.rb, constants.rb, ou quel que soit le nom que vous lui donnez).

Ver Documentation Ruby

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X