Ho uno script Ruby con il percorso /foo/bar/gazook/script.rb
. Ho anche creato un collegamento simbolico ad esso in $HOME/bin
.Dopo aver collegato un file simbolico, come faccio a ottenere il percorso del file originale in Ruby?
Ora, voglio che il mio script Ruby acceda ad altri file nella directory /foo
, e per mantenere i percorsi relativi, ho una variabile FOO_DIRECTORY = File.expand_path(File.dirname(__FILE__) + "/../../")
nel mio script.
Il problema è che se eseguo il mio script dal suo collegamento simbolico, questa directory relativa è errata (poiché immagino che si espanda da una posizione diversa).
Come posso risolvere questo problema? C'è un modo oltre all'utilizzo di un percorso assoluto?
Per una soluzione più generale, è necessario risolvere i collegamenti simbolici in un ciclo, poiché un collegamento simbolico può puntare a un altro. Inoltre, è necessario controllare ogni parte del percorso: 'bin' può essere un link simbolico, consiglierei 'File.realpath'. – hagello