2009-05-26 42 views
7

necesito para ejecutar un montón de guiones de rubí que he escrito en un servidor que no tengo acceso a sudo.
En mi propia máquina, he instalado un montón de gemas usando 'sudo gem install ..' y las uso en mi código ...
¿Hay algún mecanismo que me permita usar estas gemas sin instalarlas formalmente en un control remoto? ¿máquina?Usando una joya sin instalarlo

Respuesta

6

Puede, pero es complicado.

En primer lugar, instalarlos utilizando la opción --install-dir, es decir:

gem install gem_name --install-dir /some/directory/you/can/write/to 

En segundo lugar, asegúrese de que tiene un archivo .gemrc en su directorio principal que se ve algo como esto:

gemhome: /some/directory/you/can/write/to 
gempath: 
- /some/directory/you/can/write/to 
- /usr/local/lib/ruby/gems/1.8 

gemhome es donde las gemas deben verse primero cuando buscan una gema. gempath son todas las rutas que debe verificar al buscar una gema. Así, en el .gemrc arriba, yo estoy diciendo mi código para mirar primero en el directorio local, y si no lo encuentra, compruebe el directorio joya del sistema.

En tercer lugar, tenga en cuenta que un cierto código - código incluso dentro de las gemas - puede hacer suposiciones acerca de dónde se encuentran las gemas. Algunos código puede alterar mediante programación gempath o gemhome. Es posible que deba "alterarlo" en su propio código.

No hay mucha (leer: no) documentación sobre cómo hacerlo - la mejor manera de averiguarlo es leer las pruebas que se incluyen con la fuente de RubyGems. Aquí es cómo hackear los caminos de gemas en una tarea rastrillo para apuntar a mi versión congelada de Capistrano:

Gem.use_paths(Gem.dir, ["#{RAILS_ROOT}/vendor/gems"]) 
    Gem.refresh # picks up path changes 
+0

hecho, me hacer esto todo el tiempo (todas mis joyas se instalan en ~ /.gem) y aún no han encontrado ningún código que se porta mal, ni les resulta tan difícil. Pero YMMV. – rampion

+0

Interesante, me pregunto si ~/.gem es un caso especial. Normalmente trato de hacer referencia a las gemas instaladas en una aplicación. –

Cuestiones relacionadas