miércoles, 8 de julio de 2009

Instalar Emacs on Rails en Windows

Instalar Emacs con los plugins para Ruby on Rails en Windows no resulta tan complejo una vez que se entendió bien todo, pero lleva una serie de pasos que hay que seguir bien al pie de la letra.
Algunas cosas podrían hacerse diferente, pero yo explico la manera en la cual a mi me pareció mejor hacerlo, y no explico las otras porque el tutorial se haría interminable :D (convención sobre configuración, jeje).

1) Bajar la última versión de Emacs, los binarios completos para Windows. Al momento de hacer este tutorial, la versión era la 22.3, así que si hay nuevas versiones habría que validar nuevamente el tutorial.

2) Descomprimirlos en la carpeta que más nos guste.

3) La carpeta HOME

En Linux/Mac, cada usuario tiene una carpeta Home donde se almacena su información. Emacs utiliza esta carpeta para almacenar su configuración, y para buscar librerías y plugins extras. El problema es que en Windows esta carpeta no existe. Por lo tanto tenemos que decirle de alguna manera a Emacs, cuál será la carpeta que utilizaremos como Home.

Como hacerlo: con una variable de entorno de Windows.

- Click derecho en Mi PC,"Propiedades"
- Pestaña "Opciones Avanzadas"
- Botón "Variables de Entorno"
- En la sección de "Variables del Sistema", hacemos click en "Nueva".
Nombre: HOME
(respetar mayúsculas)
Valor: ruta de la carpeta que queramos usar como home
Ejemplo de Valor: C:\emacs_home\

4) Seguimos con la carpeta HOME:

Ya tenemos creada la Home, pero ahora hay que darle un poco de forma.
Creamos primero una carpeta que se llame ".emacs.d" . Nótese los puntos, la carpeta se llama PUNTO EMACS PUNTO DE. Esto genera un problema: el explorador de Windows no deja crear carpetas que empiecen con un punto.
Solución: lo hacemos desde la consola: abrimos la consola, nos posicionamos en la carpeta Home, y ejecutamos "mkdir .emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

Además de esta carpeta, hace falta agregar un archivo de texto donde emacs leerá la configuración de los plugins: ".emacs". Una vez más, nótese los puntos, el archivo se llama PUNTO EMACS. Podemos crear el archivo con el block de notas, y ponerle otro nombre cualquiera. Después lo renombramos a ".emacs". Otra vez, Windows no deja nombrar archivos que empiecen con un punto. Una vez más, la solución está en la consola: vamos a la consola, nos posicionamos en el directorio Home, y ejecutamos "move nombre_anterior .emacs"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

5) Rellenar el directorio .emacs.d

Dentro de esta carpeta incluiremos todos los plugins y librerías que vamos a usar. En este caso, el plugin principal va a ser Emacs on Rails. Pero además, este necesita de otros plugins y librerías para funcionar. La lista completa, y como agregar cada uno al directorio de librerías:

- CEDET
Descarga: http://cedet.sourceforge.net/ (sección Downloads)
Versión: yo utilicé la 1.0pre6, porque la 1.4 es beta aún en el momento de hacer el tutorial
Instalación: descomprimir, y mover la carpeta "cedet-1.0pre6" dentro de ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- ECB
Descarga: http://ecb.sourceforge.net/ (sección Downloads)
Versión: yo usé la 2.40, la última al momento de hacer el tutorial
Instalación: descomprimir, y mover la carpeta "ecb-2.40" dentro de ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- snippet.el
Descarga: http://www.kazmier.com/computer/snippet.el (con esta url se accede directamente al contenido del archivo)
Instalación: crear un archivo con nombre "snippet.el", llenarlo con ese contenido, y mover el archivo a la carpeta ".emacs.d"
(ver en el paso 5, como queda el árbol de directorios y archivos en la Home)

- find-recursive.el
Descarga: http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt (con esta url se accede directamente al contenido del archivo)
Instalación: crear un archivo con nombre "find-recursive.el", llenarlo con ese contenido, y mover el archivo a la carpeta ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- inf-ruby.el
Descarga: http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/inf-ruby.el?view=co (con esta url se accede directamente al contenido del archivo)
Instalación: crear un archivo con nombre "inf-ruby.el", llenarlo con ese contenido, y mover el archivo a la carpeta ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- ruby-mode.el
Descarga: http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/ruby-mode.el?view=co (con esta url se accede directamente al contenido del archivo)
Instalación: crear un archivo con nombre "ruby-mode.el", llenarlo con ese contenido, y mover el archivo a la carpeta ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- ruby-electric.el
Descarga: http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/ruby-electric.el?view=co (con esta url se accede directamente al contenido del archivo)
Instalación: crear un archivo con nombre "ruby-electric.el", llenarlo con ese contenido, y mover el archivo a la carpeta ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

- emacs-rails
Descarga: http://rubyforge.org/projects/emacs-rails (sección Downloads)
Versión: yo usé la 0.5.99.5, la última al momento de hacer el tutorial
Instalación: descomprimir, y mover la carpeta "emacs-rails" dentro de ".emacs.d"
(ver en el paso 6, como queda el árbol de directorios y archivos en la Home)

6) Resumen: cómo quedó el árbol de directorios

Si hicimos todo bien, debería habernos quedado algo de esta manera:

home_configurada\.emacs (archivo)
home_configurada\.emacs.d\ (directorio)
home_configurada\.emacs.d\cedet-1.0pre6 (directorio, dentro debería contener los directorios "semantic", "eieio", "speedbar", "commons", y otras cosas )
home_configurada\.emacs.d\ecb-2.40 (directorio, dentro debería contener muchos directorios y archivos)
home_configurada\.emacs.d\emacs-rails (directorio, dentro debería contener muchos archivos)
home_configurada\.emacs.d\find-recursive.el (archivo)
home_configurada\.emacs.d\inf-ruby.el (archivo)
home_configurada\.emacs.d\ruby-electric.el (archivo)
home_configurada\.emacs.d\ruby-mode.el (archivo)
home_configurada\.emacs.d\snippet.el (archivo)

7) Rellenar el .emacs

El archivo .emacs dijimos que va a definir que plugins cargar, entre otras cosas. Para eso tenemos que rellenarlo con el siguiente contenido (el contenido se explica a si mismo, con comentarios):

;; rutas de las librerias previas
(add-to-list 'load-path "~/.emacs.d")
(load-file "~/.emacs.d/cedet-1.0pre6/common/cedet.el")
(add-to-list 'load-path "~/.emacs.d/ecb-2.40")

;; carga de ECB
(require 'ecb)
(require 'ecb-autoloads)
;; desactivar Tip of the Day de ECB
(setq ecb-tip-of-the-day nil)
;; activar abrir los archivos con click del mouse en ECB
(setq ecb-primary-secondary-mouse-buttons (quote mouse-1--mouse-2))
;; carga automatica de ECB
(ecb-activate)

;; activar semantic
(setq semantic-load-turn-everything-on t)
(require 'semantic-load)

;; activar rails mode
(add-to-list 'load-path "~/.emacs.d/emacs-rails")
(require 'rails)

;; activar resaltado de sintaxis en ruby mode
(add-hook 'ruby-mode-hook 'turn-on-font-lock)

;; activar autocompletar (ruby electric)
(defun try-complete-abbrev (old)
  (if (expand-abbrev) t nil))
(setq hippie-expand-try-functions-list
     '(try-complete-abbrev
   try-complete-file-name
   try-expand-dabbrev))
(add-hook 'ruby-mode-hook
         (lambda()
           (add-hook 'local-write-file-hooks
                     '(lambda()
                        (save-excursion
                          (untabify (point-min) (point-max))
                          (delete-trailing-whitespace)
                          )))
           (set (make-local-variable 'indent-tabs-mode) 'nil)
           (set (make-local-variable 'tab-width) 2)
           (imenu-add-to-menubar "IMENU")
           (require 'ruby-electric)
           (ruby-electric-mode t)
           ))
(custom-set-variables
 '(ecb-options-version "2.40"))
(custom-set-faces
 )


8) Listo! ahora a usar Emacs

Para ejecutar Emacs, volvamos a la carpeta donde lo habíamos descomprimido. Dentro de ella, tiene que haber una carpeta "bin", y dentro de bin, un archivo "runemacs.exe".
Este es el archivo que hay que abrir para ejecutar Emacs bajo Windows.

Cualquier problema, revisar el tutorial (en especial el árbol de directorios en el paso 6), y el contenido del .emacs del paso 7.
Si eso no lo soluciona, o hay dudas, respondo por mail a fisadev@gmail.com
No soy un experto, pero puedo hacer mi mejor esfuerzo :)

Y no puedo dejar de agradecer a Gabriel Arellano, quien armó en el 2007 un tutorial para esto, que hoy me sirvió en gran medida para hacer funcionar todo, y para armar mi tutorial (el contenido del .emacs es en gran parte de su autoría, modificado solo por mí para adaptarse a las nuevas versiones).

Saludos

Instalar Ruby en Windows

Bueno, la instalación de Ruby en Windows no es muy compleja si usamos la versión 1.8.6, que tiene un instalador que hace todo por nosotros.

Pero si queremos usar la 1.8.7 ya no es tan sencillo, ya que no hay un one-click installer de esta versión.

Luego de leer bastante para no hacer cualquier cosa, este es el pequeño tutorial que terminé armando sobre como instalar Ruby 1.8.7 en Windows:



1) Descargar los binarios de la maquina virtual de ruby, y extraerlos en alguna carpeta. Recomendable hacerlo en C:\ruby\

2) Agregar [carpeta_de_ruby]\bin a la variable de entorno PATH
Ejemplo: si ubicamos la maquina virtual de ruby en C:\ruby, a PATH tenemos que agregarle C:\ruby\bin

Para quien no sabe agregar rutas a PATH, se hace de esta manera:

- Click derecho en Mi PC,"Propiedades"
- Pestaña "Opciones Avanzadas"
- Botón "Variables de Entorno"
- En la sección de "Variables del Sistema", buscamos la que se llama "Path".
- La modificamos, agregando el directorio [carpeta de ruby]\bin al final, separado por ";".
Ejemplo:
Si Path contenía:
"C:\Archivos de programa\Microsoft SQL Server\80\Tools\Binn\;C:\Archivos de programa\IDM Computer Solutions\UltraEdit-32;C:\ruby\bin"
Ahora contendrá:
"C:\Archivos de programa\Microsoft SQL Server\80\Tools\Binn\;C:\Archivos de programa\IDM Computer Solutions\UltraEdit-32;C:\ruby\bin;C:\ruby\bin" 

3) Librerias necesarias:

Para que ruby funcione correctamente, van a ser necesarias algunas librerias que en Windows no tenemos por defecto. 
Algunas librerías no tienen un instalador, y es necesario copiarlas manualmente. En muchos sitios recomiendan colocar dichas librerías en la carpeta [carpeta_de_windows]\System32. Pero según los mas experimentados, no es una buena práctica. Lo recomendable es colocar estas librerías en la carpeta [carpeta_de_ruby]\bin.
Si poseen instalador, entonces logicamente hay que usar el instalador.

Estas son algunas de las librerías que seguramente se van a necesitar en cualquier máquina. Me tomé el trabajo de colocar los links para conseguir las últimas versiones:

- ssleay32.dll, libeay32.dll

- zlib.dll
(renombrar zlib1.dll a zlib.dll)

- iconv.dll

- readline.dll
la versión que paso está hecha en Ruby, y me enteré de que existía gracias a la lista de Ruby Argentina :D
(se instala ejecutando "ruby setup.rb" desde consola, estando en el directorio donde descomprimimos el archivo bajado)

- sqlite3.dll

4) Luego debemos instalar Gems, para poder utilizar el sistema de paquetes.

- Bajar la ultima version de gems desde http://rubyforge.org/frs/?group_id=126
- Descomprimirla en algún directorio
- Estando en el directorio desde la consola, ejecutar "ruby setup.rb"



Extra: Instalar Rails

Despues de instalar ruby y gem, se puede instalar rails como todos saben, haciendo:
"gem install rails"

Pero un detalle a tener en cuenta es que hay problemas con la versión 1.2.4 de sqlite3 en Windows, así que es conveniente instalar la 1.2.3:
"gem install sqlite3-ruby -v 1.2.3"