Open Source


30
Jul 09

Howto: Configurar Rails en Ubuntu

El propósito de este post es presentar la receta oficial que utilizamos en (in)signia para encarar el setup de nuestro ambiente de trabajo.

Es muy importante resaltar que nuestro entorno de trabajo se encuentra basado en Linux (prometemos en breve dedicar un post completo a las razones/motivos que nos llevaron a inclinarnos por Linux como plataforma de trabajo). La distribución que elegimos es Ubuntu en su versión 9.04, básicamente por su popularidad y crecimiento.

El primer tema que tenemos que encarar al empezar el setup de nuestro entorno de trabajo es la instalación de Ruby. La forma tradicional de instalar esto en linux sería con el siguiente comando:

  sudo apt-get install ruby

Esto funciona pero nos acarrea un problema serio debido a que apt-get (debido a los repositorios de Ubuntu) nos instalará la versión 1.8.7 de Ruby. Versión que ha resultado ser bastante conflictiva en lo que respecta a compatibilidad con las gemas más utilizadas.

La solución a este problema es ir por el camino más seguro y compilar directamente la versión 1.8.6 de Ruby. Para ello, estos son los pasos a seguir:

  sudo apt-get -y install build-essential libssl-dev libreadline5-dev zlib1g-dev
  wget http://rubyforge.org/frs/download.php/45875/ruby-1.8.6-p287.tar.gz
  tar xzf ruby-1.8.6-p287.tar.gz && cd ruby-1.8.6-p287
  ./configure --prefix=/usr/local --with-openssl-dir=/usr --with-readline-dir=/usr --with-zlib-dir=/usr
  make
  sudo make install

Existen patch levels más nuevos (el 369 para ser exactos) pero hemos tenido serios problemas de compatibilidad con capistrano, una gema cuyo funcionamiento es indispensable.

Una vez completada la instalación de Ruby, el paso a seguir es instalar rubygems. Para esto tendremos que seguir los siguientes pasos:

  wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
  tar xvzf rubygems-1.3.5.tgz && cd rubygems-1.3.5
  sudo ruby setup.rb

En este punto, podemos instalar las gemas básicas para trabajar con una aplicación Rails. Para esto, simplemente corremos:

  sudo gem install rails mongrel capistrano

A continuación tenemos que seguir por la instalación de los motores de base de datos y sus repectivos adapters para Ruby. Nosotros manejamos dos motores: MySQL y SQLite3.

Empecemos por el mas liviano… Para instalar SQLite3, tenemos que seguir estos pasos:

  sudo apt-get install sqlite3 libsqlite3-dev
  sudo gem install sqlite3-ruby

Los pasos para instalar MySQL son muy parecidos (aunque es necesario instalar más paquetes):

  sudo aptitude install mysql-server mysql-client libmysql-ruby1.8 libmysqlclient-dev
  sudo gem install mysql

Hasta aquí, estaríamos en condiciones de realizar la siguiente prueba:

  rails prueba && cd prueba
  ruby script/generate scaffold Persona nombre:string apellido:string
  rake db:migrate
  ruby script/server

Luego intentamos ingresar con un browser a http://localhost:3000/personas. Debería funcionar.

Aunque en este punto nuestro entorno de trabajo posee un corazón que late bien fuerte; nos falta una pieza sumamente importante: un framework para testing. En (in)signia estamos muy familiarizados con el Behavior Driven Development, por lo que en nuestros proyectos utilizamos Rspec y Cucumber. Para instalarlos necesitamos los siguientes pasos:

  sudo apt-get install libxml2 libxml2-dev libxslt1-dev
  sudo gem install rspec rspec-rails cucumber webrat nokogiri

Las dependencias que instalamos son requeridas por la gema nokogiri.

Resta instalar un buen sistema de control de versiones, actualmente el código fuente de todos nuestros proyectos se encuentra administrado con Git. Su instalación es relativamente sencilla, basta con ejecutar:

  sudo apt-get install git-core gitk

Con esto instalamos todos los comandos de  Git, su aplicación GUI (muy util cuando las papas queman) y el autocompletion para la consola.

Sin embargo, en (in)signia procuramos trabajar con las últimas versiones disponibles del software que utilizamos diariamente. Por lo que, luego de la instalación básica, normalmente hacemos:

  wget http://kernel.org/pub/software/scm/git/git-1.6.4.tar.gz
  tar xzvf git-1.6.4.tar.gz && cd git-1.6.4
  ./configure
  make
  sudo make install

A esto le agregamos un buen .gitconfig, como este:

[alias]
  up = pull --rebase origin
  br = branch
  st = status
  ci = commit
  co = checkout
  ql = log --abbrev-commit --pretty=oneline
  qlr = log --reverse --abbrev-commit --pretty=oneline
  pending = log --reverse --abbrev-commit --pretty=oneline master --cherry-pick master...
  undo = reset --soft HEAD^
  pick = cherry-pick

[push]
	default = matching

Y mejoramos nuestro prompt, agregando las siguientes lineas en nuestro .bashrc:

function parse_git_dirty {
  [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}
function parse_git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/[\1$(parse_git_dirty)]/"
}
export PS1='\u@\h \[\033[1;33m\]\w\[\033[0m\]$(parse_git_branch)$ '

alias ack='ack-grep'

Y listo! Ya tenemos un entorno de trabajo bien sólido para encarar las exigencias de nuestro trabajo de la mejor manera.


19
Dec 07

Finalmente… administrate_me liberado

Tenemos el honor de anunciar que finalmente liberamos administrate_me, nuestro plugin para Ruby on Rails que permite acelerar la construcción de un backend “production-ready” para una aplicación web.

Este plugin fue concebido durante el desarrollo de una extranet para uno de nuestros clientes, posteriormente lo utilizamos -y mejoramos- durante el desarrollo de elsigloweb.com y luego lo utilizamos en todos los proyectos que siguieron.

Lo interesante de administrate_me es que se trata de un plugin bastante liviano que gran escalabilidad debido a su simple personalización. Quizás, esto sea porque este plugin fue construído desde “la trinchera”. Es super-beta (y siempre lo será) pero nos ha ayudado a encaminar alrededor de 8 proyectos.

Otro factor destacable de administrate_me es que es compatible 100% con Rails 2.0.

La configuración del plugin es realmente simple:

ame_source1.JPG

Hemos logrado reducir el código de las vistas básicas que requiere el plugin y recientemente incorporamos un generador para acelerar su creación:

ame_source2.JPG

ame_source3.JPG

Una de las grandes funcionalidades que incorporamos fue la posibilidad de que el plugin ejecute un testing funcional de sus controllers. Nuevamente, esto requiere muy poco código:

ame_source4.JPG

El producto final del plugin es un backend verdaderamente “production ready”.

ame_look1.JPG

El plugin se encuentra disponible a través de googlecode en:

http://administrateme.googlecode.com

Esperamos que esta contribución pueda aprovechada por la comunidad y que administrate_me logre convertirse de esta manera en una herramienta útil para salvar los distintos obstáculos de esta disciplina.

Prometemos en breve un screencast y más documentación sobre la utilización de este plugin.


18
Oct 07

Ubuntu 7.10: se acabaron las excusas!

Hoy la comunidad entera fue sacudida por la salida de Gutsy Gibbon, la versión 7.10 de Ubuntu. Desde sus comienzos, esta distribución de linux fue promocionada bajo el lema “Linux para seres humanos”, y sin duda alguna, esta nueva versión es su máxima expresión.

Ahora bien, técnicamente, ¿qué mejoras incorpora Gutsy Gibbon?

Lo principal, en esta versión Ubuntu logra un nivel de compatibilidad increíble con los diferentes dispositivos que utilizamos habitualmente. De este modo recursos como impresoras, sonido, video, reproductores y data-drivers USB son reconocidos simplemente conectándolos a la PC.

Algo muy necesario, y que en esta nueva versión está bien soportado, son las conexiones a redes WI-FI, estos accesos inalámbricos tan de moda ultimamente.

Además incorpora las versiones más avanzadas de los recursos más importantes del Software libre (OpenOffice, Firefox, TheGimp, Gnome, entre otros).

El tema es: ¿todo esto Windows lo tiene hace tiempo? Respuesta simple: totalmente.

La cuestión es que ahora lo tiene Linux, y esto es lo debería importar. Objetivamente, un sistema operativo en serio, estable, confiable, seguro y totalmente gratuito; impulsado por una comunidad que crece y se amplía día a día. Que encima, ahora es fácil de usar, fácil de actualizar y administrar; y actualmente, incluso más simple que Windows (o acaso no se cansaron de las inestabilidades de los Windows 9x, o las flaquezas en seguridad de Windows XP, o la máxima expresión de la incomodidad como es Windows Vista).

Si nuestro tema es el desarrollo de software (en cualquiera de sus variedades), en Linux corren mejor Java, Ruby, Rails, PHP, MySQL, y Python, entre otros recursos.

Finalizando, me queda esta reflexión, con todos estos avances, ¿qué excusa nos queda para seguir utilizando Windows?


9
Jun 07

Solo apto para exigentes!

Estuvimos probando las bondades de browsershots.org, un servicio online totalmente open-source, que permite ver cómo luce un sitio (desarrollado preferentemente con XHTML y CSS) en los distintos browsers soportados por Windows, Linux y Mac.

El proceso es relativamente simple, hay que realizar el submit de la url que aloja el layout que queremos testear, y ese trabajo queda en una cola de espera que cómo máximo puede demorar 4 horas. A medida que pasa el tiempo, el servicio de browsershots comienza a generar los screenshots en cada browser seleccionado.

Si bien es un servicio que puede llegar a ser muy lento (puede llegar a demorar todo un dia en generar todos los screenshots solicitados), es una buena medida para testear si nuestros layouts son compatibles a los distintos browsers que se usan.