Posts Tagged ‘windows’

Automatisch richtige Pfad-Trennzeichen benutzen (Linux/Windows)

Donnerstag, April 10th, 2008

Häufiges Szenario ist die Entwicklung unter Windows (mit InstantRails) und das Deployment unter Linux.
Greift man innerhalb der Rails-Anwendung auf das Dateisystem zu, hat man hierbei ein Problem mit den Pfadangaben. Unter Windows trennt ein Backslash die einzelnen Verzeichnisse, unter Linux* jedoch ein normaler Schrägstrich (Slash).

Man könnte eine Trennzeichen-Variable definieren und diese dann in jedem nur erdenklichen Verzeichnis-String einsetzen. Den Wert dieser Variablen könnte man abhängig von der aktuellen Umgebung (Development vs. Production) machen, um ihn nicht vor jedem Deploy ändern zu müssen. Das macht die Pfadangaben-Strings innerhalb der Anwendung nicht nur unübersichtlich und fehleranfällig sondern ist auch von der Denkweise falsch: Das Trennzeichen hängt ja nicht von der Rails-Umgebung sondern vom Betriebssystem ab- falls es mehrere Railsentwickler mit unterschiedlichen Betriebssystemen gibt, funktioniert das ganze schon wieder nicht.

Die Lösung bringt File.join(*parts)

File.join fügt einzelne Strings als Pfadangaben mit dem jeweils Betriebssystem-spezifischen Trennzeichen zusammen:

File.join('foo', 'bar')  # => "foo/bar" (Linux/Mac OS)

File.join('foo', 'bar')  # => "foo\bar" (Windows)

Es wird keine Operation auf dem Dateisystem ausgeführt; der Pfad muss also nicht existieren. Möchte man das Trennzeichen isolieren, genügt ein File.join(”",”") (falls es eine kürzere Schreibweise gibt, lasst es mich wissen).

*und natürlich bei allen anderen *NIX-”Geschmacksrichtungen”, wie BSD oder Darwin (Mac OS)