Ruby on Rails


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.


3
Jul 07

El triunfo de las buenas ideas

En estos dias, el ciberespacio descubrió un nuevo portal de noticias, elsigloweb.com (http://www.elsigloweb.com), el portal de noticias de el Diario El Siglo de Tucumán. El cual, por su diseño, su performance y sus funcionalidades, es actualmente el portal de noticias más avanzado de la región.

A nosotros (los que nos encargamos de su desarrollo) nos ha colmado de satisfacciones:

  • pusimos exitosamente en marcha el portal en la mitad del tiempo pactado
  • posee el panel de administración más avanzado del mercado
  • somos la primera empresa de la región en poner en producción una aplicación basada en Ruby on Rails de esta magnitud
  • a los usuarios les llevó tan solo 15 minutos aprender a manejar el panel

Aunque no todos los triunfos son tecnológicos. Es gratificante contemplar la gran recepción que ha tenido el portal en la gente. Los lectores participan y enriquecen las notas publicadas a través de sus comentarios. Es indudable que han encontrado un lugar donde su palabra es tomada en cuenta y es valorada.

Y esta respuesta es la mayor recompensa para un proyecto que desde su gestación fue pensado únicamente para sus lectores.


30
Jun 07

UNT on RAILS

En la jornada de ayer viernes 29 de Junio, tuvimos el honor de dar una charla en la Sala de Audiovisuales de la UNT. La temática giró entorno a Ruby on Rails (como no podía ser de otra manera), y las mejores prácticas del desarrollo de software.

Al igual que la presentación en la Tecnológica (ver nota relacionada) durante la semana de la ingenieria, el saldo de esta charla fue totalmente gratificante. Los participantes demostraron el gran interés que despertó la temática a través de una ronda de consultas muy rica y variada.

Una vez mas, gracias a la UNT y a la IEEE por esta invitación, realmente ha sido un placer.


13
Jun 07

administrate_me: 100% elegancia sobre Rails

Presentamos la primera versión administrate_me, un plugin desarrollado para Ruby on Rails que acelera la construcción de aplicaciones web. Gracias a los recursos ofrecidos por administrate_me, se puede desarrollar una aplicación web de cero pero que se encuentra en todo momento lista para la entrega (production ready!).