ruby on rails - programas - ¿Cómo uso gemas con Ubuntu?
ruby installer (5)
¿Dónde están mis gemas?
Puede encontrar dónde se almacenan sus gemas usando el comando gem environment
. Por ejemplo:
chris@chris-laptop:~$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.2
- RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/bin/ruby1.8
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/chris/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
Si miras la sección "GEM PATHS:" puedes ver que las gemas se pueden almacenar en dos lugares en mi computadora portátil: /usr/lib/ruby/gems/1.8
o en el directorio .gem
en mi directorio de inicio.
También puede ver que los ejecutables se almacenan en DIRECTORIO EJECUTABLE, que en este caso es /usr/bin
.
Como /usr/bin
está en mi camino, esto me permite ejecutar cap
, merb
, rails
, etc.
Actualizando tu RUTA
Si por alguna razón su DIRECTORIO EJECUTABLE no está en su ruta (por ejemplo, si es /var/lib/gems/1.8/bin), entonces necesita actualizar su variable PATH.
Asumiendo que estás usando el shell bash. Puede hacer esto rápidamente para la sesión actual escribiendo lo siguiente en el indicador del intérprete de comandos; /var/lib/gems/1.8/bin
que desea agregar /var/lib/gems/1.8/bin
a la ruta:
export PATH=$PATH:/var/lib/gems/1.8/bin
y presione regresar. Eso agrega el nuevo directorio al final de la ruta actual. Tenga en cuenta los dos puntos entre $PATH
y /var/lib/gems/1.8/bin
Para establecer el valor de todas las sesiones, deberá editar su archivo .profile
o .bashrc
y agregar la misma línea al final del archivo. Normalmente edito mi archivo .bashrc
sin ninguna otra razón que no sea lo que siempre he hecho. Cuando termine, guarde el archivo y luego actualice su entorno escribiendo:
bash
en el indicador de shell. Eso hará que el .bashrc
vuelva a leerse.
En cualquier punto, puede verificar el valor actual de $PATH
escribiendo
echo $PATH
en el indicador de shell.
Aquí hay una muestra de uno de mis servidores, donde mi nombre de usuario es "chris" y el nombre de la máquina es "chris-laptop":
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$
¡Mi gema no se cargará!
"Las gemas Ruby no se cargarán aunque estén instaladas " resalta un problema común al usar múltiples versiones diferentes de Ruby; En ocasiones, el entorno de gemas y la ruta de gemas no se sincronizan:
rb(main):003:0> Gem.path
=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit
Cualquier proceso de Ruby aquí solo busca en un lugar sus gemas.
:~/$ gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
- RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
- EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
- /home/mark/.gem/ruby/1.9.1
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Mire cuidadosamente el resultado del entorno de la gema:
- GEM PATHS:
- /opt/ruby1.9/lib/ruby/gems/1.9.1
Esta no es la misma ruta devuelta por Gem.path:
["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
Es difícil decir exactamente qué hizo que lib/ruby
cambiara a lib/ruby1.9
pero lo más probable es que el desarrollador trabajara con múltiples versiones de Ruby. Un mv
o ln
rápido resolverá el problema.
Si necesita trabajar con múltiples versiones de Ruby, entonces debería usar rvm .
Recientemente me actualicé a Ubuntu 9.04 y tengo problemas al usar gemas. Instalé Ruby, Rubygems y Rails usando apt-get. El comando rails
funciona.
Luego instalé capistrano y otras gemas, como heroku. Para hacer eso, utilicé el comando:
sudo gem install XXX
Cuando quiero usar el comando de cap
no funciona:
bash: cap: command not found
Es lo mismo con los otros comandos de gemas.
¿Tengo algo especial que hacer para que los comandos de la gema funcionen?
Como señaló @Chris, necesitas agregar el entorno de gemas a tu camino. Puedes hacer esto por:
echo ''export PATH=$PATH:/var/lib/gems/1.8/bin'' | tee --append ~/.bashrc
La carpeta en la que se almacenan las gemas debe estar en su RUTA, por ejemplo, la mía es:
/home/victor/.gem/ruby/1.8/bin
Verifica tu camino tecleando
echo $PATH
Se ve que al instalar rubygems, ahora en ubuntu 9.04, tengo este problema. Noté que en el "entorno de gemas" el directorio ejecutable es "/var/lib/gems/1.8/bin", en lugar de "/ usr / bin" ... ¿Este es un problema con rubygems o con ubuntu 9.04?
La solución que encontré es agregar "/var/lib/gems/1.8/bin" a mi $ PATH haciendo esto: export PATH = $ PATH: /var/lib/gems/1.8/bin pero no se guarda ... ¿cómo puedo salvar mi camino?
Gracias...
Resolvi: coloquei o export PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]
mkmf es parte del paquete ruby1.9.1-dev. Este paquete contiene los archivos de encabezado necesarios para las bibliotecas de extensión de Ruby 1.9.1. Necesita instalar el paquete ruby1.9.1-dev haciendo:
sudo apt-get install ruby1.9.1-dev