La Aventura de Ruby on Rails (Parte 1): El inicio

viernes, diciembre 26, 2008

Este post es el inicio de una serie en la que pretendo ilustrar mis experiencias e impresiones en el mundo de Ruby on Rails. Debo decir que al momento de escribir esto conozco realmente poco (por no decir nada) sobre Ruby, Rails y afines, así que empezaré desde cero. Vamos con un poco de teoría

  • ¿Qué es Ruby?
    Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro Matsumoto y distribuido bajo licencias libres. Combina una sintaxis inspirada en Python y Perl, con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU

  • ¿Qué es Ruby on Rails?
    Ruby on Rails (RoR o Rails) es un entorno de desarrollo web de código abierto escrito en Ruby y optimizado para satisfacción de los programadores y de la productividad. Te permite escribir aplicaciones web siguiendo el paradigma de la arquitectura Modelo Vista Controlador (MVC) y su filosofía principal es: Favorecer la convención antes que la configuración

  • ¿Qué son las Gemas de Ruby o Ruby Gems?
    Las Gemas son paquetes autocontenidos utilizados por Ruby oficialmente para distribuir librerías y aplicaciones. Son empleadas por Rails para la instalación de su entorno

  • ¿En qué consiste la arquitectura MVC?
    En pocas palabras podemos decir que la arquitectura MVC separa una aplicación en 3 capas: el Modelo, la Vista y el Controlador. El Modelo trabaja directamente con las fuentes de datos (bases de datos, sockets, etc) y es el encargado de la integridad de la información. La Vista es la interfaz que usará la aplicación para interactuar con el usuario y la que se usará para mostrar los datos del modelo. La Vista debe ser "tonta" en el sentido de que no debe tener conocimiento alguno sobre las fuentes de datos, los eventos u otros, solo debe mostrar la información que se le indique. Por último, el controlador es quien maneja los eventos de la aplicación, digamos que es la "pega" entre el Modelo y la Vista; puede interactuar con las funciones del modelo y envía información a la Vista.

Dicho esto empecemos con la instalación del ambiente Ruby on Rails. Las siguientes instrucciones están hechas para Debian Lenny 5.0 e instalarán Ruby 1.8 y Rails 1.2.6.

Instalamos Ruby y todos los paquetes necesarios (como super usuario):
# aptitude update
# aptitude install build-essential ruby ruby1.8-dev ri ri1.8 rdoc rdoc1.8 irb irb1.8 ruby1.8-examples libreadline-ruby libopenssl-ruby libdbi-ruby libdbd-mysql-ruby libdbd-pg-ruby libdbd-odbc-ruby libdbd-sqlite3-ruby libpgsql-ruby libmysql-ruby mysql-server mysql-client


Descargamos los paquetes necesarios para Ruby si no los tenemos (ver la página de RubyForge para más información):
$ wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
$ wget http://rubyforge.org/frs/download.php/26547/activesupport-1.4.4.gem
$ wget http://rubyforge.org/frs/download.php/28328/actionpack-1.13.6.gem
$ wget http://rubyforge.org/frs/download.php/28331/actionmailer-1.3.6.gem
$ wget http://rubyforge.org/frs/download.php/28325/activerecord-1.15.6.gem
$ wget http://rubyforge.org/frs/download.php/28334/actionwebservice-1.2.6.gem
$ wget http://rubyforge.org/frs/download.php/19878/rake-0.7.3.gem
$ wget http://rubyforge.org/frs/download.php/28337/rails-1.2.6.gem


Instalamos el manejador de paquetes de Ruby (RubyGems):
# tar -xvzf rubygems-1.2.0.tgz
# cd rubygems-1.2.0
# ruby setup.rb
# ln -s /usr/bin/gem1.8 /usr/bin/gem


Y por último instalamos las gemas que acabamos de descargar:
# gem install activesupport-1.4.4.gem
# gem install actionpack-1.13.6.gem
# gem install actionmailer-1.3.6.gem
# gem install activerecord-1.15.6.gem
# gem install actionwebservice-1.2.6.gem
# gem install rake-0.7.3.gem
# gem install rails-1.2.6.gem


Es importante destacar que se deben instalar las versiones tal cual como aparecen aquí y en el mismo orden pues son las que funcionan correctamente entre sí.

Para comprobar que todo ha ido bien basta con hacer:
$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
$ rails --version
Rails 1.2.6


Con esto ya podemos empezar a crear aplicaciones en Rails :D pero dejaremos esa parte para la próxima entrega.

Acá dejaré un script que se puede utilizar para instalar Ruby on Rails al toque, solo basta ejecutarlo como super usuario y él se encargará de hacer el resto ;)
#!/bin/bash
#===================================================
#
# ruby_instalacion.sh - Script en bash que permite instalar Ruby On Rails
# al vuelo
#
# Copyright (C) 2008: Wil Alvarez
#
#===================================================

# Instalar Ruby
aptitude update
aptitude install -y build-essential ruby ruby1.8-dev ri ri1.8 rdoc rdoc1.8 irb irb1.8 ruby1.8-examples libreadline-ruby libopenssl-ruby libdbi-ruby libdbd-mysql-ruby libdbd-pg-ruby libdbd-odbc-ruby libdbd-sqlite3-ruby libpgsql-ruby libmysql-ruby

# Instalar RubyGems
wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
tar -xvzf rubygems-1.2.0.tgz
cd rubygems-1.2.0
ruby setup.rb
GEM=/usr/bin/gem
if [ -n $GEM ]; then
rm -f /usr/bin/gem
fi
ln -s /usr/bin/gem1.8 /usr/bin/gem
cd ..
rm -rf rubygems-1.2.0/

# Instalar Rails
wget http://rubyforge.org/frs/download.php/26547/activesupport-1.4.4.gem
wget http://rubyforge.org/frs/download.php/28328/actionpack-1.13.6.gem
wget http://rubyforge.org/frs/download.php/28331/actionmailer-1.3.6.gem
wget http://rubyforge.org/frs/download.php/28325/activerecord-1.15.6.gem
wget http://rubyforge.org/frs/download.php/28334/actionwebservice-1.2.6.gem
wget http://rubyforge.org/frs/download.php/19878/rake-0.7.3.gem
wget http://rubyforge.org/frs/download.php/28337/rails-1.2.6.gem

gem install activesupport-1.4.4.gem
gem install actionpack-1.13.6.gem
gem install actionmailer-1.3.6.gem
gem install activerecord-1.15.6.gem
gem install actionwebservice-1.2.6.gem
gem install rake-0.7.3.gem
gem install rails-1.2.6.gem

rm activesupport-1.4.4.gem actionpack-1.13.6.gem actionmailer-1.3.6.gem activerecord-1.15.6.gem actionwebservice-1.2.6.gem rake-0.7.3.gem rails-1.2.6.gem


Primera Cayapa Tećnica de Canaima 2.0

Los días 05 y 06 de diciembre del presente año (2008 por si acaso :p) se celebró en la Península de Paraguaná el primer BSP (Bug Squash Party) sobre la distribución venezolana GNU/Linux Canaima 2.0; evento que fue bautizado como Cayapa Técnica. Para aquellos que no sean de Venezuela o no conozcan el significado, "Cayapa" es el nombre que le dan los campesinos venezolanos al trabajo mancomunado, realizado de manera cooperativa. Así que de ahí sale el nombre tan original ;)

La planta Venezolana de Industria Tecnológica (VIT) fue la sede anfitriona de tan importante evento al cual tuve la suerte ser invitado como miembro de la Comunidad de Software Libre y donde tuve el honor de compartir con otros compañeros de la comunidad y de instituciones gubernamentales como el Centro Nacional de Tecnologías de Información (CNTI), la Fundación para el Desarrollo de la Ciencia y la Tecnología (FUNDACITE) y el Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL), entre otros.

De más está decir que el evento fue netamente técnico (claro, con sus respectivos ratos de recreación y curda... ejmmm... perdón ocio xD) centrado en la búsqueda y resolución de errores en el proyecto Canaima. El equipo se dividió en 2 grupos; uno orientado a la parte técnica de la distribución y otro a la plataforma colaborativa. Al final de la jornada se reportaron 36 fallas y sugerencias sobre el sistema y la plataforma colaborativa, así como algunas ideas para su futura corrección.

El evento también sirvió para realizar pruebas de funcionamiento del sistema operativo sobre los equipos de escritorio y portátiles de VIT, por lo que se espera que para el 2009 estos equipos ya vengan con Canaima 2.0 pre-instalado y corriendo de la mejor manera posible.

A continuación dejo un álbum con unas pocas fotos de las instalaciones de la planta de VIT y del grupo de trabajo de la Cayapa :D

Canaima BSP 1

Instalar Compiz Fusion en Debian Lenny

En estos días me dispuse a instalar de nuevo Compiz en mi Debian Lenny y me encontré con la sorpresa de que los repositorios que pululan por ahí en internet ya no estaban disponibles así que decidí hacer una búsqueda y publicar mis resultados. Acá está el enlace del repositorio que encontré y a continuación explico como hacer la instalación.

Compiz Fusion solo funcionará si tienes una tarjeta gráfica con soporte OpenGL y si tienes instalado correctamente el driver de vídeo. Si tu tarjeta gráfica es NVIDIA puedes leer este post para instalar el driver de vídeo correctamente.

Dicho esto, entonces procedamos... Primero agregamos las siguientes líneas a nuestro archivo /etc/apt/sources.list:
deb http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git
deb-src http://download.tuxfamily.org/osrdebian unstable compiz-fusion-git


Agregamos la llave GPG ejecutando en la consola (como super usuario):
# wget http://download.tuxfamily.org/osrdebian/61B8DB62.gpg -O- | apt-key add -

Y actualizamos la lista de paquetes:
# aptitude update

Luego instalamos:
# aptitude install compiz compiz-gnome

Para ejecutarlo basta con correr en la consola:
$ compiz --replace &

Y para configurarlo vamos al menú Sistema->Preferencias->Administrador de Opciones CompizConfig



Si queremos añadirle más funcionalidad al asunto podemos instalar el decorador de ventanas emerald:
# aptitude install emerald emerald-themes

Y entonces ejecutar el compiz con la siguiente instrucción:
$ compiz --replace -c emerald &

Eso nos dará como resultado un escritorio muy cool xD


Montar carpeta compartida de Windows en Debian

jueves, diciembre 18, 2008

Para montar una carpeta compartida de Windows en Debian (o cualquier otra distro GNU/Linux basada en Debian) necesitamos instalar el sistema de archivos smbfs. El smbfs entiende el protocolo SMB/CIFS usado por Windows para el trabajo en grupo y nos permite usar el comando mount para montar dicho recurso compartido como un dispositivo común y corriente.

Instalamos el smbfs:
# aptitude install smbfs

Creamos el directorio en el cual queremos montar la carpeta compartida, por ejemplo /mnt/compartida:
# mkdir /mnt/compartida/

Ahora supongamos que el recurso se encuentra en la ruta //192.168.1.15/carpeta, que el usuario para acceder es usuario y la contraseña 123456. Usando el comando mount nos quedaría algo como:
mount -t smbfs -o username=usuario,password=123456 //192.168.1.15/carpeta /mnt/compartida

A partir de ahora podremos trabajar la información de la carpeta compartida en la ruta /mnt/compartida de forma transparente. Podríamos incluso agregar una línea al archivo /etc/fstab para que el recurso se monte automaticamente cada vez que iniciemos la PC pero lo dejaré como tarea para el lector =D

Cambiar zona horaria en Debian

martes, diciembre 16, 2008

Para ver o configurar la zona horaria establecida en nuestro sistema Debian basta con ejecutar:

# dpkg-reconfigure tzdata

Seleccionamos el Área Geográfica:


Y posteriormente el país:

Editar la configuración de GNOME desde la consola

sábado, noviembre 29, 2008

El escritorio GNOME y muchas aplicaciones utilizan GConf para almacenar las preferencias del usuario y los datos de configuración del sistema en un repositorio central que almacena los valores en forma de pares clave-valor, simplificando la administración de la configuración para los usuarios y administradores del sistema.

GNOME viene con un editor de preferencias llamado GConf Editor. Puede invocarse desde la consola ejecutando el comando:

$ gconf-editor

Desde allí podemos cambiar la mayoría de las preferencia del sistema.

Sin embargo, cuando necesitamos cambiar las preferencias de forma automática (digamos desde un script o algún programa) el editor NO será de gran ayuda. Para ello contamos con la herramienta gconftool. Usarla es realmente simple; mostraré con un ejemplo como hacerlo.

Supongamos que deseamos mostrar en nuestro escritorio el icono de la Papelera de Reciclaje. Desde el GConf Editor podemos ver que la ruta donde se encuentra esta preferencia es /app/nautilus/desktop/ y la clave es trash_icon_visible. Obviamente si la clave está en true se mostrará el icono de la papelera y si está en false no se mostrará.

El comando sería tan sencillo como:

$ gconftool -s --type=bool /apps/nautilus/desktop/trash_icon_visible true
donde:
  • -s indica que la variable será establecida (del inglés set)

  • --type indica el tipo de clave a editar. Hasta ahora he usado string para el texto y bool para los valores booleanos (verdaderos y falsos)

  • Luego se especifica la ruta completa de la clave, en este caso /apps/nautilus/desktop/trash_icon_visible

  • Y por último el valor que le queremos asignar a la clave, en este caso true.

Podemos usar el comando donde y cuando sea necesario para ajustar nuestras preferencias al gusto.

Agregar imágenes de fondo al GRUB

A continuación explicaré cómo agregar imágenes de fondo al GRUB en Debian Lenny.

Instalamos el paquete grub-splashimages:
# aptitude install grub-splashimages
Después de esto quedarán instaladas algunas imágenes de fondo en la ruta /boot/grub/splashimages.

Para colocar una de ellas de fondo basta con ejecutar el siguiente comando:
# ln -s /boot/grub/splashimages/nombre_imagen.xpm.gz splash.xpm.gz
donde nombre_imagen.xpm.gz es el nombre del archivo que queremos colocar como fondo.

Reiniciamos y veremos nuestra flamante imagen de fondo :)