Tengo un script de Ruby con ruta /foo/bar/gazook/script.rb
. También creé un enlace simbólico a él en $HOME/bin
.Después de enlazar simbólicamente un archivo, ¿cómo obtengo la ruta del archivo original en Ruby?
Ahora, quiero que mi script de Ruby acceda a algún otro archivo en el directorio /foo
, y para mantener las rutas relativas, tengo una variable FOO_DIRECTORY = File.expand_path(File.dirname(__FILE__) + "/../../")
en mi script.
El problema es que si ejecuto mi script desde su enlace simbólico, este directorio relativo es incorrecto (ya que supongo que se está expandiendo desde una ubicación diferente).
¿Cómo puedo solucionar esto? ¿Hay alguna manera además de usar un camino absoluto?
Para una solución más general, debe resolver los enlaces simbólicos en un bucle, porque un enlace simbólico puede apuntar a otro. Además, debe verificar cada parte de la ruta: 'bin' puede ser una symlink, también. Yo recomendaría 'File.realpath'. – hagello