En un par de días desarrolle un pequeño plugin rails que puede ser útil mientras estamos desarrollando nuestro proyecto. El plugin se llama todo_list.

La idea es simple, el plugin recorre nuestros archivos .rb buscando comentarios del tipo #TODO:, #NOTE, etc. y a partir de ellos crea listas de tareas.

El formato de los comentarios que entiende son:

#TODO: es una tarea
#IDEA: es una idea
#NOTE: es una nota
#REMOVE: código pendiente de eliminar
#DEBUG: código para revisar
#TEST: código para probar
#DEF: descripción de un método
#CHANGE: código que se debe cambiar
#QUESTION: preguntas pendientes
#FIXME: codigo con errores conocidos

Para instalarlo

./script/plugin install http://todo-list-rails-plugin.googlecode.com/svn/trunk/todo_list/


Luego en cualquier vista de nuestro proyecto

<%= todo_list %>

Ahora obtenemos un menú que nos permite navegar entre nuestras listas de tareas, notas, ideas, metodos, debug, etc.

Las listas se separan dependiendo del tipo de comentario, por lo que vamos a tener una lista para cada formato soportado. En cada lista, las tareas se ven separadas por archivos y muestra en que linea esta.

Tengo que aclarar que el plugin no fue testeado, de todas maneras es simple y su uso es solo
para desarrollo.

Necesita Rails 1.2.0 o posterior para funcionar, si no lo tenemos vamos a necesitar el plugin engines.

Anuncios

Desde Ruby on Rails hay varias formas de generar archivos pdf, pero para realizar mi traductor yo me decide por PDF::Writer así voy a dar una breve explicación de como utilizarlo.

PDF::Writer se pude instalar como gem y necesita de dos paquetes más para funcionar, estos son los pasos..

sudo gem install transaction-simple
sudo gem install color-tools
sudo gem install pdf-writer

Luego de tener todo instalao, debemos introducir en el controlador que utilicemos para generar los pdf lo siguiente

require.png

Ahora vamos a hacer un pdf que muestra los datos de un array en una tabla, es recomendable tener a mano el manual y la referencia a la API de PDF::Writer.

pdf.png


El traductor tenia dos problemas con los caracteres especiales, uno era cuando se colocaba texto para traducir, ahí caracteres especiales se estaban mandando mal al traductor de google por lo tanto después se veían mal.

El otro era cuando exportamos a pdf, todos lo caracteres especiales se veían mal porque PDF::Writer no soporta utf-8.

El primer problema era solo porque no estaba mandando un campo oculto que tiene el formulario del traductor de google, en donde el valor era utf-8, asi que solo agregando ese campo al post, el problema quedo listo.

El segundo problema lo solucione con ayuda de la lista de ror en ingles, donde buscando vi que alguien ya había tenido ese problema con PDF::Writer, la solución fue agregar un método que transformara el texto de formato. Aquí dejo el método que implemente para solucionar el problema.

pasar_a_iso

Hace tiempo que no escribo, pero no he dejado de aprender Ruby on Rails, ya la verdad es que cada vez me gusta más.

Este post es para anunciar una aplicacion que en este momento estoy pasando a producción, es un traductor con un toque de web 2.0, se llama translate 2.0.

La idea es muy simple, se podria considerar como un skin para el traductor de google porque de fondo se comunica con los servidores de google para traducir el texto.

Entonces que es lo que tiene de nuevo?

  • maneja el historial de las palabras que vamos traduciendo.
  • podemos imprimir el historial
  • podemos exportarlo a pdf
  • y podemos enviarlo por emial.

Porque todo esto? solo porque un día me di cuenta que me seria útil, y bueno…. ya que quería seguir programando en RoR… terminé haciéndolo.

Espero que a alguien más le sea útil!

Feliz Año 2007 para todos!!!!

Cuando desarrollamos una aplicacion web, es muy comun que tengamos una parte para el administrador y otra habilitada para los visitantes de la web. En Ruby on Rails, generalemente esto esta diferenciado por los controladores, y cada uno utiliza un layout determinado.

Pero que pasa si hay un controlador que da funcionalidad a las dos partes, por ejemplo un controlador search que nos da la posibilidad de realizar busquedas, puede ser utilizado desde la web y desde la administracion. El problema aca es que al controlador se le asigna un layout, y para nuestro caso no deberia ser el mismo para el administrador que para nuestros visitantes.

Asi que aqui voy a dejar un metodos que he utilizado para solucionar este problema, y otro para cuando el layout que desamos mostrar depende del metodo que estamos ejecutando.

Diferenciar entre admin y web

Aqui vmos a seleccionar el layout dependiedo si estamos logeados o no en el sistema, esta de mas decir que admin es para cuando lo estamos y web para cuando no.

En el controlador que vamos a seleccionar el layot dinamicamente colocamos:

layout :seleccionar_layout

Y tenemos que definir el metodo seleccionar_layout en el mismo controlador o en aplication si lo vamos a utilizar mas de una ves. El metodo serias asi:

def seleccionar_layout
if logged_in?
'admin'
else
'web'
end
end

Hay que tener en cuenta que el metodo logged_in? nos debe de indicar si estamos loggeados en el sistema o no. Este metodo es del plugin acts_as_authenticated.

Diferenciar entre metodos del mismo controller

Ahora haremos un metodo que selecciona el layout dependiendo del metodo que estemos llamando. Y aqui esta:

def seleccionar_layout
case action_name
when 'list' : 'layout_list'
when 'new' : 'layout_new'
when 'edit' : 'layout_edit'
end
end

Cuando estuve leyendo manuales para poder configurar jEdit como un IDE para rails, me encontré con profont, la cual dicen es la mejor letra para los programadores. Luego de instalarla me di cuenta de que no están muy equivocados sobre eso.

Aqui hay una breve descripción que da su creador:

ProFont is a small bitmap font which is absolutely great for programming.
It was made for Macintosh computers, but now it's also available for Windows and Linux/UNIX X Windows.

Luego de instalarla en Windows la configure como letra por defecto de jEdit, jugué un poco con los colores del editor y aquí dejo dos capturas de como luce ahora.

img4.PNG

imagen1.PNG

Aquí dejo las capturas de como configure el editor de jEdit.

text area.PNG

syntax.PNG

Más plugins para jEdit

mayo 26, 2006

Para realizar este segundo post dedicado a configurar jEdit he adquirido valiosa información aquí, donde recomiendan que plugins deben de ser instalados para desarrollar aplicaciones en ruby on rails, también hay varios screenshots que nos pueden dar una idea de lo que vamos a obtener con nuestro trabajo.

La lista de plugins es la siguiente:

  • Console (es una consola integrada al editor, útil para no tener que abrir DOS)
  • Errorlist (Muestra errores de sintaxis)
  • JavaScriptSidekick (Explorador para javascript -> no logre encontrarlo desde jEdit)
  • JDiffPlugin (Visual diff tool -> realmente no se que es)
  • LogViewer (Mantiene una cola de tus logs)
  • Navigator (Navega en el historial de edición)
  • OpenIt (Abre cualquier archivo rápidamente)
  • ProjectViewer (Maneja tus archivos como un árbol de proyecto)
  • Ruby (Ya lo tenemos instalado)
  • Sidekick (Indispensable, otros plugins dependen de él)
  • SuperAbbrevs (Es quien nos ayuda a lograr el auto completado al estilo textmate)
  • Superscript (Nos ayuda a escribir Macros)
  • SwitchBuffer (Abre cualquier archivo rápidamente)
  • XML (Para ediciones de xml)

A instalar

El siguiente paso es instalar todos los plugins que estan en la lista de arriba, para eso vamos a Plugins->Plugin Manager, al tab Install y en la lista de plugins que tenemos, seleccionamos todos los que necesitemos.

Aquí hemos terminado con todos nuestros plugins, vamos por el auto completado.

Instalando Snippets

Vamos a la pagina de snippets y lo descargamos. El .zip contiene dos archivos que nos interesan: ruby y rhtml, estos los copiamos en C:\Documents and Settings\username\.jedit\SuperAbbrevs.

Luego reiniciamos jEdit, vamos a Utilities->Global Options y seleccionamos Shortcuts, buscamos Plugin: SuperAbbrevs, colocamos como Primary shortcut C+ENTER y listo, ya tenemos todo pronto para probar las abreviaciones del teclado que estén incluidas.

Para saber cuales, son podemos obtenerlas desde la documentación de la página o en las opciones del plugin SuperAbbrevs.