Monthly Archives: January 2009

You are browsing the site archives by month.

Rails 2.2 & Inflector & Dependencies

Si has actualizado a rails 2.2 (o superior) desde una versión previa puedes encontrarte con un par de errores típicos con una solución muy simple:

`const_missing’: uninitialized constant Rails::Plugin::Dependencies (NameError)

Es debido a que Dependencies ahora es ActiveSupport::Dependencies.

`load_missing_constant’: uninitialized constant Inflector (NameError)

Es debido a que Inflector ahora es ActiveSupport::Inflector. Por lo que ahora puedes usar las inflections tal que así:

ActiveSupport::Inflector.inflections do |inflect|  
  ...
end

Instalar módulos de CPAN como paquetes .deb automáticamente

En un sistema basado en paquetes .deb (Debian, ubuntu, etc…) es bastante común tener una gran cantidad de módulos perl ya empaquetados en los repositorios pertinentes. La traducción del nombre del módulo al nombre del paquete es inmediata, Nombre::Del::Paquete se convertiría a libnombre-del-paquete-perl. Si resulta que tienes la mala suerte de no tener el que buscas, no pasa nada, existe una maravillosa herramienta llamada dh-make-perl (# aptitude install dh-make-perl) que nos solucionará todo.

Tienes múltiples opciones de configuración, pero explicaré dos formas de usarla, la rápida, cómoda e instantánea (¡como el colacao!) y otra donde vas más paso a paso (es decir, que en vez de un comando, ejecutas dos, joooplis).

Forma 1: Directamente se descargará el código y generará un .deb listo para ser instalado.

Digamos que quieres instalarte el módulo Hola::Que::Tal, pues ejecutas:

$ dh-make-perl --build --cpan Hola::Que::Tal

Con eso estaremos descargando el código del paquete (si en cpan existe claro) y generando un .deb de forma automática. Si existen dependencias se te indicará qué módulos se requieren, en cuyo caso sería recomendable que mirases si los tienes en tus repositorios antes de generar un .deb para ellos también.

Por poner un ejemplo real:

$ dh-make-perl --build --cpan Gtk2::Sexy
(...)
$ ls
Gtk2-Sexy-0.05                     libgtk2-sexy-perl_0.05.orig.tar.gz
libgtk2-sexy-perl_0.05-1_i386.deb
$ sudo dpkg -i libgtk2-sexy-perl_0.05-1_i386.deb

Forma 2: Tenemos un .tar.gz descomprimido descargado de cpan, generaremos la estructura de ficheros necesaria para generar un .deb con las herramientas típicas de debian (con debuild, $ sudo aptitude install devscripts).

Por seguir el ejemplo anterior, si quisiéramos instalar el módulo Hola::Que::Tal versión 1.0, nos descargamos de cpan su tar.gz y lo descomprimimos, por lo que tendríamos un directorio con el nombre Hola-Que-Tal-1.0. Con dh-make-perl generaremos los ficheros necesarios para poder generar un paquete deb (es decir, se creará un directorio debian/ con ficheros varios, los cuales, si sabes para qué sirven y quieres complicarte la vida, puedes modificarlos a mano para personalizar el .deb generado). Después simplemente entramos en el directorio y generamos el .deb ejecutando debuild.

$ ls 
Hola-Que-Tal-1.0.tar.gz
$ tar xfz Hola-Que-Tal-1.0.tar.gz
$ dh-make-perl Hola-Que-Tal-1.0/
(...)
$ cd Hola-Que-Tal-1.0
$ debuild
(...)
$ ls .. | grep .deb
libhola-que-tal-perl_1.0-1_i386.deb

Inactividad desactivada

La inactividad sólo apetece cuando tenemos demasiado que hacer.

Noel Coward (1899-1973)

Y cuando somos unos putos vagos. Eso también puede afectar.

Después de par de meses de dejar de escribir tontadas, de nuevo me entran ganas. Que el FSM nos pille confesados.