sábado, 17 de enero de 2009

Instalar Ruby, Rubygems, Rails, Mongrel y MySQL en Mac OS X 10.5 (Leopard)

Acabo de adquirir (hace unos meses, pero hasta ahora no me había puesto) un fabuloso iMac con MacOS X Leopard. Como ya comente en mi post de presentación, lo que más me interesa cuando me siento delante de un ordenador es aprender nociones de desarrollo de App web.
Más concretamente me interesa aprender a desarrollar App web con Rails que es un Framework
que se apolla en el patrón de desarrollo MVC (modelo-vista-controlador). Pero bueno, este no es un post para explicar conceptos, que por otro lado todos podemos aclarar con una búsqueda rápida en Google. Este es un post práctico que se apolla en el gran trabajo realizado por Dan Benjamin alguien que realmente entiende del tema. Así que lo único que hare aquí será enlazar con tres de sus artículos que son los que me han servido a mi para tener todo el software necesario para montar un entorno de desarrollo en Mac OS X 10.5.

Lo primero que dire es que Mac OS X Leopard viene con Ruby y con Rails enstalados de serie. ¿Por que instalarlos nosotros mismos? Voy a citar los motivos que da Dan Benjamin en el primero de los articulos [1].
  1. Para poder desarrollar nuestras App con las últimas versiones de Rails y Ruby, sin tener que esperar a que sean actualizadas por Apple.
  2. El dice que donde están instaladas las versiones de Rails y Ruby que vienen con el SO, son susceptibles de ser cambiadas en una de las actualizaciones automáticas de Apple. Esto nos puede traer problemas según Dan Benjamin.
  3. EL autor hace mucho incapie en instalar todo en usr/local esto lo explica en el segundo artículo que recomiendo [2] "using usr/local". Recomiendo leer con atención este. A mi me han quedado algunas cosas claras que son importantes para que podamos trabajar cómodos en el Terminal de nuestro Mac.
  4. El último motivo que da es para aprender. yo también apollo este motivo. No hay nada como hacer las cosas uno mismo. ¡Ojo! no digo reinventar la rueda. Pero sí ver como funcionan las cosas.
El último articulo que voy a citar de Dan Benjamin es para realizar la descarga y compilación de MySQL [3]. Tengo que decir que en los tres está todo estupendamente explicado, sin embargo yo intente hacer esto mismo hace un año y no lo conseguí. Si acabas de empezar y te falta background para entender alguno de los conceptos que aparecen. Puedes hacer dos cosas, o darte de cabezazos y dejarlo por imposible, o seguir navegando y aprendiendo hasta que todo lo que nombra te sea más familiar. Al final se consigue. como ya he dicho son tutoriales practicos, si sigues los pasos tendrás todo instalado.

Antes de terminar el post, quiero dejar algunas definiciones de algunos conceptos que no tenía claros y gracias a la gente de la lista de RoR en castellano me han quedado claros (gracias a Isaac, cartucoGL, Guillermo y Manuel).

------------------------------------------------------------------------------------------------------------------
NOTA:
Algunas de las definiciones que voy a poner están expresadas con mis propias palabras, así que puede que esten mal o se puedan ampliar, si quieres dejar un comentario para mejorar el post, sera bien recibido.
------------------------------------------------------------------------------------------------------------------
$PATH: Es una variable del SO. Que sirve para decir al Terminal y a los scripts que hagamos por ejemplo en Ruby donde están los ejecutables de Ruby, Rails, mysql...

Comando EXPORT: export es un comando de unix-like para setear variables de entorno, en este caso estás seteando la variable de entorno PATH que la usa el sistema operativo y un millar de aplicaciones unix-like para buscar automaticamente executables, es decir, si tu haces desde la linea de comandos "grep loquesea", el binario grep está en un directorio especificado en el PATH y por esto el sistema operativo lo encuentra y lo ejecuta. El orden de búsqueda va en función del orden en el que aparecen los directorios en el PATH, por esto, si tienes un binario "ruby" en /usr/local/bin/ruby y otro en /usr/bin/ruby, en función de que directorio tengas ANTES en el path, te ejecutará uno o otro cuando pongas "ruby" en la linea de comandos. Si no lo pusieras en el path tendrias que poner /usr/local/bin/ruby para ejecutar el ruby que tu quieres y no el que el sistema encuentra.


NOTA: Puedes ver todas las variables de entorno ejecutando export sin
parametros
host:~ user$ export
declare -x Apple_PubSub_Socket_Render="/
tmp/launch-QXYN2p/Render"
declare -x COMMAND_MODE="unix2003"
declare -x DISPLAY="/tmp/launch-x3MvM8/:
0"
declare -x HOME="/Users/user"
declare -x LANG="es_ES.UTF-8"
declare -x LOGNAME="user"
declare -x MANPATH="/usr/share/man:/usr/
local/share/man:/usr/X11/man"
declare -x OLDPWD="/Users/user"
declare -x
PATH="/opt/local/bin:/opt/
local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin"
declare -x PWD="/Users/user/dbm"
declare -x SECURITYSESSIONID="ab233ca1"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x TERM="xterm-color"
declare -x TERM_PROGRAM="Apple_Terminal"
declare -x TERM_PROGRAM_VERSION="240"
declare -x USER="user"

Comparativa de sistemas UNIX: Antes he dicho que hay momentos en los que un determinado tutorial te queda grande, no entiendes lo suficiente. En este link se hace una comparativa de SO UNIX
si a tí te puede servir aprovechalo. A mi de momento me queda grande.

Por último pondre 2 preguntas que me surgieron mientras seguía los articulos:

¿Mac OS X trae el .bash_login creado por defecto?

No,no lo trae creado. Hay varios archivos que se cargan donde poder poner variables de entorno y en general inicializar.
/etc/profile
~/.profile
~/.bash_login
~/.bash_profile
~/.bashrc
Obviamente los que empiezan por .bash son solo para cuando uses la shell bash.

¿En cual de los tres debería de poner lo de: "export PATH="/usr/local/bin: /usr/local/sbin:$PATH" ?
Estudia tus necesidades y decide cual usar. Yo lo he puesto en .profile en mi home. Por cierto la home tuya está /User/tunombre.

Hasta aquí la instalación de todo el entorno de desarrollo en Mac OS X para empezar a trastear con Rails. Luego seguro que habra que instalar otras herramientas (Git o subversion por ejemplo o librerías para la manipulación de imágenes con Ruby) pero eso será otro día.

Para cualquier rectificación o duda no dudes en poner un comentario

Enlaces de Dan Benjamin:
[1] http://danbenjamin.com/articles/2008/02/ruby-rails-leopard
[2] http://danbenjamin.com/articles/2005/11/using_usr_local
[3] http://danbenjamin.com/articles/2007/11/installing-mysql-on-mac-os-x

2 comentarios:

  1. Anónimo7/8/09 21:56

    Muy bueno el aporte... gracias!!

    ResponderEliminar
  2. De nada. Me alegra que te sirva

    ResponderEliminar