Ruby¶
rbenv¶
Instalación y configuración desde cero¶
- instalación en /usr/share/
$ git clone https://github.com/sstephenson/rbenv.git rbenv$ mkdir rbenv/plugins
- plugin para compilar rubies
$ cd /usr/share/rbenv/plugins$ git clone https://github.com/sstephenson/ruby-build.git
- para tener
bash_completions$ ln -s /usr/share/rbenv/completions/rbenv.bash /etc/bash_completion.d/rbenv.sh
- en
/etc/profile.d/rbenv.shy/root/.bashrcexport RBENV_ROOT=/usr/share/rbenv export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)"
- nos logueamos como root así crea los archivos iniciales
Actualización¶
git pull en /usr/share/rbenv/ y en cada plugin (/usr/share/rbenv/plugins)
Instalar un ruby¶
Se instalan como root con rbenv install _versión_. Las versiones se arman en /usr/share/rbenv/plugins/ruby-build/share/ruby-build/ pero ya hay muchas armadas.
Ruby Enterprise Edition (ree)¶
Una versión algo desmantenida pero muchas aplicaciones están preparadas para usarlo, además de que tiene mejor rendimiento.
- Se instala con rbenv install
ree-1.8.7-2012.02 - Si tcmalloc da problemas en la configuración, se puede deshabilitar anteponiendo
CONFIGURE_OPTS="--no-tcmalloc" rbenv install ... - Si la compilación da problemas más jodidos, se puede usar esta receta/versión patcheada: patched-ree-1.8.7-2012.02 y gcc-4.5 (fuente)
CC=gcc-4.5 rbenv install patched-ree-1.8.7-2012.02
Gemas¶
Las gemas hay que instalarlas como root o, preferentemente, usar bundle install --deployment para instalar gemas locales al proyecto si este usa bundler. Después de cada instalación hay que usar rbenv rehash para que genere los binarios. Si es una gema que necesita ser compilada, y es para ree o patched-ree, hay que usar CC=gcc-4.5 gem install.
bundler¶
Hay que instalarlo como root para que cada proyecto lo tenga disponible para instalar las demás gemas localmente.
passenger¶
- Se instala como root para cada ruby que lo vaya a usar. Hay que patchearlo por gcc-4.7.
- passenger-install-nginx-module
Alternativamente bajamos la fuente de nginx que queramos y se la pasamos a passenger