Gems mirror local

by Gastón Ramos

Dado que tengo un enlace a internet que no es lo que uno quisiera tener, cada vez que quiero instalar una gema, me demora varios minutos, lo cual es bastante molesto cuando uno está trabajando, por esto decidí poner mi propio gems mirror local, pasemos a la acción:

primero tenemos que editar el archivo de configuración para nuestro gem mirror:

emacs -nw ~/.gemmirrorrc y ponemos el siguiente contenido:

--- 
- to: /home/gemsmirror/rubygems.mirro 
  from: http://gems.rubyforge.org

noten que yo voy a poner mi mirror en la carpeta /home/gemsmirror/rubygems.mirror pero uds la pueden poner en cualquiera que quieran.

luego de esto ejecutamos el comando

gem mirror

y después un largo pero largo rato (a mí esto me llevó como un mes con interrupciones, son como 16GB de gemas) se baja todas las gemas del mirror remoto. Una vez hecho y terminado esto tenemos que configurar nuestro servidor web para que publique el mirror, yo lo hice con apache, así sería:

emacs -nw /etc/apache2/sites-available/gemsmirror

y ponemos lo siguiente



        ServerName gems.localhost
        ServerAdmin root@gems.localhost
        DocumentRoot /home/gemsmirror/rubygems.mirror/
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
        

        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
       #AuthName "Dev Access"
       # AuthType Basic
       # AuthBasicProvider file
        # AuthUserFile /opt/coolstack/apache2/conf/htpasswd.users
       # Require user gems
# user: gems
# pass: password
                Order allow,deny
                allow from all
        

        ErrorLog /var/log/apache2/error-gemsmirror.log
        LogLevel warn
        #CustomLog /var/log/apache2/access-gemsmirror.log combined
        ServerSignature Off


Lo puse sin autenticación por que yo solamente le doy un uso local pero si quieren publicarlo en internet sería razonable ponerle clave.

Ahora habilitamos el site de mirror

a2ensite gemsmirror

y agregamos el host:

emacs -nw /etc/hosts

ponemos lo siguiente:

....
######################################################################
# Gemsmirror local
127.0.0.1 gems.localhost

.....

Ahora recargamos el apache:

/etc/init.d/apache2 reload

y vamos al navegador y chequeamos que se vean el directorio de nuestro mirror en:

http://gems.localhost/

si todo está bien agregamos nuestro mirror local al gemrc:

 emacs -nw ~/.gemrc
--- 
:sources: 
- http://gems.localhost
#- http://gems.rubyforge.org/
#- http://gems.github.com
#- http://gemcutter.org/
#- http://gems.github.com
:bulk_threshold: 1000
:benchmark: false
:update_sources: true
:backtrace: false
:verbose: true

fijensé que yo comenté todos los demás mirrors, de esta manera sólo busca las gemas en el mirror local y al instalar o buscar cualquier cosa la velocidad es increíble :), ahora solo resta pner un cron para que actualice el mirror diariamente (por la noche) y listo.

Eso es todo, enjoy !