2017-11-01 4 views
0

Ich verwende File.read('file.txt') in einem Ruby-Skript. Aber ich weiß nicht, was der beste Weg ist, einen korrekten relativen Pfad zu erstellen, kann ichrubin Weg - relativer Pfad

File.read(File.dirname(__FILE__) + '/file.txt) 

aber ich frage mich, ob es eine schönere Art und Weise in Ruby?

+0

Ihr Code sieht gut aus. Das einzig mögliche Problem ist die Annahme eines Schrägstrichs, wie unten erläutert. Wenn dies beispielsweise ein * rails * -Projekt ist, könnten Sie auch 'Rails.root' verwenden, um Pfade innerhalb des Projekts zu definieren. –

+0

Dies ist der Grund, warum das Juwel [Pfadname] (https://ruby-doc.org/stdlib-2.1.0/libdoc/Pfadname/rdoc/Pathname.html) existiert. –

Antwort

1

Es gibt eine Reihe von Möglichkeiten, aber dieses ist das flexibelste:

File.read(File.expand_path('file.txt', File.dirname(__FILE__)) 

Sie können auch Dir.pwd verwenden, um das aktuelle Arbeitsverzeichnis in der Shell im Verhältnis zu sein.

Beachten Sie, dass unter Verwendung von String-Verkettung für Pfade kann Arbeit, aber expand_path oder join mit ist zuverlässiger und Griffe richtig Plattform Unterschiede, wie unter Windows, wo Teile mit Backslash nativ verbunden sind, statt.