J'exécute Ruby sur Windows mais je ne sais pas si cela devrait faire une différence. Tout ce que je veux faire, c'est obtenir le chemin absolu du répertoire de travail actuel. Est-ce possible avec irb? Apparemment, à partir d'un script, il est possible d'utiliserFile.expand_path(__FILE__)
Mais d'irb, j'ai essayé ce qui suit et j'ai obtenu une erreur "Autorisation refusée":
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Dexygen
la source
la source
Dir.pwd
) ou voulez-vous le répertoire où se trouve le script en cours d'exécution (qui estFile.dirname(__FILE__)
)? Imaginez appeler un script de n'importe où ailleurs (commeruby testdirectory/testscript.rb
) ici, les deux seront différents!File.expand_path(__FILE__)
" - parce que__FILE__
l'emplacement est un animal différent du répertoire de travail actuel (qui estDir.pwd
).Réponses:
Dir.pwd
semble faire l'affaire.http://ruby-doc.org/core/Dir.html#method-c-pwd
la source
pwd
), qui pourrait être quelque part complètement différent de celui où se trouve le fichier de script.File.expand_path File.dirname(__FILE__)
renverra le répertoire relatif au fichier à partir duquel cette commande est appelée.Mais
Dir.pwd
retourne le répertoire de travail (résultats identiques à l'exécutionpwd
dans votre terminal)la source
Dir.pwd
est équivalent àpwd -P
.exec('pwd -L')
obtiendra l'équivalent de pwd dans le terminal (pwd est normalement un code bash intégré, et ne résout pas les liens symboliques).bundle exec rspec spec
dans le répertoire '/ project', tandis que dans le fichier 'spec / spec_helper.rb', la valeur deDir.pwd
sera toujours '/ project'.En ce qui concerne le chemin relatif au script d'exécution en cours, depuis Ruby 2.0, vous pouvez également utiliser
C'est donc essentiellement la même chose que
la source
__FILE__
c'est une constante mais__dir__
c'est une méthode .Cela vous donnera le répertoire de travail du fichier actuel.
Exemple:
fichier_actuel: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
résultat: "/ Users / nemrow / SITM / folder1 / folder2"
la source
Dir.pwd
, votre suggestion peut potentiellement différer.Si vous souhaitez obtenir le chemin complet du répertoire du fichier rb actuel:
la source
Grâce à cela, vous pouvez obtenir le chemin absolu de n'importe quel fichier situé dans n'importe quel répertoire.
Cela reviendra
la source