Imagine que tiene un foo.rb ejecutable, con las bibliotecas bar.rb organizada de la siguiente manera:Encontrando bibliotecas relativas al utilizar enlaces simbólicos al rubí ejecutables
<root>/bin/foo.rb
<root>/lib/bar.rb
En la cabecera de foo.rb se coloca el siguiente requiere traer funcionalidad en barra.rb:
require File.dirname(__FILE__)+"../lib/bar.rb"
Esto funciona bien siempre que todas las llamadas a foo.rb sean directas. Si pone como decir $ HOME/proyecto, y enlace simbólico foo.rb en $HOME/usr/bin
, entonces
resuelve a __FILE__
$HOME/usr/bin/foo.rb
, y por lo tanto no puede encontrar bar.rb
en relación con el nombre de directorio para foo.rb
.
Soy consciente de que los sistemas de envasado, tales como rubygems solucionar este problema mediante la creación de un espacio de nombres para buscar la biblioteca, y que también es posible ajustar la load_path usando $:
incluir $HOME/project/lib
, pero parece como si una solución más sencilla debe existe. ¿Alguien ha tenido experiencia con este problema y ha encontrado una solución o receta útil?
Eso es definitivamente mejor, al menos son solo dos líneas. Todavía desafortunado que no hay una sola solución de línea. – dgtized