web-dev-qa-db-fra.com

Un script Ruby peut-il indiquer dans quel répertoire il se trouve?

Inspiré par " Obtenir le répertoire source d'un script Bash de l'intérieur ", quelle est la façon Ruby de faire cela?

55
java.is.for.desktop

File.dirname(__FILE__) vous donnera le chemin relatif au script en cours d'exécution. File.expand_path(File.dirname(__FILE__)) vous donnera le chemin absolu.

63
gaqzi

Utilisation __dir__

Au Ruby 2.0, __dir__ est le moyen le plus simple d'obtenir cela. Il

Renvoie le chemin absolu canonisé du répertoire du fichier à partir duquel cette méthode est appelée.

Voir le __dir__ documentation, et " Pourquoi __FILE__ est-il en majuscule et __dir__ en minuscule? ".

52
Nathan Long

utilisez __dir__

File.dirname(__FILE__) n'est pas un bon moyen d'obtenir le répertoire où le script est stocké.

Au début, le répertoire de travail et le répertoire avec le fichier de script sont les mêmes, mais ils peuvent changer.

Par exemple:

Dir.chdir('..') do
    puts __dir__
    puts File.expand_path(File.dirname(__FILE__))
end

pour le fichier de script stocké dans /Desktop/tmp en cours d'exécution, il donnera une sortie

/home/mateusz/Desktop/tmp
/home/mateusz/Desktop
3
Mateusz Konieczny