Mam skrypt w języku Ruby ze ścieżką /foo/bar/gazook/script.rb
. Stworzyłem także dowiązanie symboliczne do niego w $HOME/bin
.Po dowiązaniu symbolicznym pliku, jak uzyskać ścieżkę oryginalnego pliku w Ruby?
Teraz chcę, aby mój skrypt Ruby uzyskał dostęp do innego pliku w katalogu /foo
, a aby zachować względne ścieżki, w moim skrypcie mam zmienną FOO_DIRECTORY = File.expand_path(File.dirname(__FILE__) + "/../../")
.
Problemem jest to, że jeśli uruchomię mój skrypt od jego miejsce linku, to względny katalog jest niewłaściwy (ponieważ myślę, że jego rozszerzenie z innej lokalizacji).
Jak to naprawić? Czy istnieje sposób poza użyciem bezwzględnej ścieżki?
Aby uzyskać bardziej ogólne rozwiązanie, musisz rozwiązać dowiązania symboliczne w pętli, ponieważ jedno dowiązanie symboliczne może wskazywać na inny, a dodatkowo musisz sprawdzić każdą część ścieżki: 'bin' może być również dowiązanie symboliczne. Polecam 'File.realpath'. – hagello