2011-06-22 18 views
7

Empaco un código de rubí en una gema. Quiero referir el código en la gema en algún otro código. Entonces, en el Gemfile especifico el nombre, la versión y la ruta local de la gema. Al igual que:¿Cómo referir una gema local en rubí?

gem 'gemname','0.x', :path => 'RELATIVE_PATH_TO_GEM_FILE' 

Después de instalar paquete, veo

Using gemname (0.x) from source at RELATIVE_PATH_TO_GEM_FILE 

Pero cuando corro el código, no puedo encontrar el código de la joya. LOAD_PATH muestra ABSOLUTE_PATH_TO_GEM_FILE/lib.

No es de extrañar que no pueda encontrar el código, solo existe el archivo gem en ABSOLUTE_PATH_TO_GEM_FILE. no está desempaquetado Entonces no hay directorio lib.

si instalo ese archivo joya en mi sistema, todo funciona bien. Puedo ver que el archivo gem fue descomprimido en archivos de código fuente. Pero mi pregunta es si puede referir directamente el archivo joya local de alguna manera?

+0

Normalmente, el término "joya local" significa uno que ha compilado e instalado localmente, en lugar de descargarlo desde otro sitio web. ¿Has considerado compilar e instalar la gema localmente, en lugar de hacer lo que estás haciendo? –

+0

En realidad, el archivo .gem fue creado por mí mismo. Acabo de empacar un código de rubí en ese archivo .gem intentando que sea fácil compartirlo con otro código. Y hay un directorio lib en el archivo .gem. Estaba pensando que será como jar en cuanto a java. Supongo que Ruby puede ver ese archivo de paquete en lugar de extraerlo del paquete. Y de manera confusa, bundler realmente encuentra la fuente en el paquete. pero load_path parece no ser compatible con el directorio en el paquete. – user810923

+0

Y, por cierto, aunque bundler ha encontrado ese archivo .gem en mi ruta específica, no almacenará en caché la .gem en el proveedor/caché, a menos que el archivo .gem se haya instalado en el gemset del sistema. – user810923

Respuesta

7

No, no puede consultar un archivo .gem directamente.

En su terminología, debe usar una gema "desempaquetada".

:path => '/foo/bar/' 

donde /foo/bar/ es un directorio (GEM) con lib/, etc.

1

Hicimos una ubicación local (no en todo el sistema) gemas. Hemos establecido estas variables de entorno:

GEM_HOME=/path/to/rubygems-1.3.4 
RUBYLIB=/path/to/rubygems-1.3.4/lib/ 

Mediante el establecimiento de esos, entonces podemos hacer 'gem install ...' para poner la joya construida en ese directorio, y el rubí sabe dónde encontrarlos.

Cuestiones relacionadas