Ich verwende Ruby unter Windows, obwohl ich nicht weiß, ob das einen Unterschied machen sollte. Ich möchte nur den absoluten Pfad des aktuellen Arbeitsverzeichnisses abrufen. Ist das von irb aus möglich? Anscheinend ist es aus einem Skript möglichFile.expand_path(__FILE__)
Aber von irb habe ich Folgendes versucht und einen Fehler "Berechtigung verweigert" erhalten:
File.new(Dir.new(".").path).expand
ruby
irb
working-directory
Sauerstoff
quelle
quelle
Dir.pwd
) oder möchten Sie das Verzeichnis, in dem sich das aktuell ausgeführte Skript befindet (welches istFile.dirname(__FILE__)
)? Stellen Sie sich vor, Sie rufen ein Skript von irgendwo anders (wieruby testdirectory/testscript.rb
) hier auf, die beiden werden unterschiedlich sein!File.expand_path(__FILE__)
" - weil sein__FILE__
Standort ein anderes Tier ist als das aktuelle Arbeitsverzeichnis (das heißtDir.pwd
).Antworten:
Dir.pwd
scheint den Trick zu tun.http://ruby-doc.org/core/Dir.html#method-c-pwd
quelle
pwd
). Dies kann sich an einem völlig anderen Ort befinden als der Ort, an dem sich die Skriptdatei befindet.File.expand_path File.dirname(__FILE__)
gibt das Verzeichnis relativ zu der Datei zurück, aus der dieser Befehl aufgerufen wird.Aber
Dir.pwd
kehren das Arbeitsverzeichnis (Ergebnisse identisch mit der Ausführungpwd
in Ihrem Terminal)quelle
Dir.pwd
ist äquivalent zupwd -P
.exec('pwd -L')
wird das Äquivalent von pwd im Terminal erhalten (pwd ist normalerweise eine eingebaute Bash und löst keine symbolischen Links auf).bundle exec rspec spec
im Verzeichnis '/ project' aus, während in der Datei 'spec / spec_helper.rb' der Wert vonDir.pwd
weiterhin '/ project' lautet .Was den Pfad relativ zum aktuell ausgeführten Skript betrifft, können Sie seit Ruby 2.0 auch verwenden
Das ist also im Grunde das gleiche wie
quelle
__FILE__
ist eine Konstante, aber__dir__
eine Methode .Dadurch erhalten Sie das Arbeitsverzeichnis der aktuellen Datei.
Beispiel:
aktuelle_Datei: "/Users/nemrow/SITM/folder1/folder2/amazon.rb"
Ergebnis: "/ Users / nemrow / SITM / folder1 / folder2"
quelle
Dir.pwd
und Ihr Vorschlag könnte möglicherweise abweichen.Wenn Sie den vollständigen Pfad des Verzeichnisses der aktuellen rb-Datei abrufen möchten:
quelle
Auf diese Weise können Sie den absoluten Pfad jeder Datei in einem beliebigen Verzeichnis abrufen.
Dies wird zurückkehren
quelle