Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:Pero que es?

    (Puntos:5, Informativo)
    por Papipo (10510) el Miércoles, 14 Diciembre de 2005, 17:01h (#658791)

    Lo primero es el lenguaje. Ruby es un lenguaje muy, muy flexible. De hecho, el creador de rails, intentó implementar su "idea" con PHP, pero fue el propio lenguaje el que no le dejó "explayarse".

    Ruby permite, por ejemplo, implementar métodos en tiempo de ejecución. En el siguiente párrafo explico como rails explota esto. Además, rails te "obliga" a seguir ciertas pautas, es lo que llaman "convención sobre configuración". En lugar de pasarte horas modificando archivos .xml para que todo esté como quieres, se dan por hechas ciertas cuestiones, que se deberán aplicar siempre.
    En realidad todo es configurable, no vayais a pensar que rails no es flexible. Lo que pasa es que si sigues las pautas, estarás programando tu aplicación en cuanto te sientes delante del ordenador. Un par de ejemplos de estas pautas:

    • La clave primaria de una tabla debe llamarse 'id'. Nada de id_tabla, tabla_id o IdTabla.
    • Los nombres de las tablas deben ir en plural.

    Yo uso rails y estoy contento con estas pautas, me parecen correctas y no interfieren para nada en mi forma de programar. De hecho, me parecen simplemente, buenos consejos a seguir.

    Aparte, rails es un framework MVC, con lo que añadimos otra característica interesante al resultado de lo que programemos , que será más mantenible y estará mejor estructurado.

    Rails trae incorporado un componente que se llama ActiveRecord. Es un ORM, sirve para mapear tablas/registros a objetos. Entre otras cosas, permite no tener que escribir SQL, ni siquiera en caso de que haya relaciones (joins) de por medio. En php existe algo similar, que es lo que usaba: DB_DataObject, pero ActiveRecord abstrae aún más las cosas. Ejemplo:

    Tengo el modelo Articulo, que "apunta" a la tabla articulos, y la Clase Usuario, que apunta a la tabla usuarios.
    Para decirle a rails que un usuario tiene varios artículos, basta con especificar una línea:

    class User   has_many :articles # end

    Por haber hecho eso, cuando tenga una instancia de un usuario:

    @usuario = Usuario.find(1) # ahora el usuario con id 1 está en @usuario
    for articulo in @usuario.articulos
      render_text articulo.titulo # <--- imprime el titulo de cada articulo del usuario
    end

    La "magia" ocurre en la línea "has_many :articles". Gracias al dinamismo de Ruby, rails acaba de añadir a nuestra clase Usuario varios métodos, uno de ellos articulos(), que devuelve la colección de artículos del usuario. Añadir un nuevo artículo a la colección del usuario, es tan sencillo como escribir @usuario.articulos << articulo. Luego @usuario.save, y todo está guardado en la base de datos. ActiveRecord soporta relaciones 1-1, 1-n y n-n.

    Os habréis fijado en que no hace falta poner paréntesis, pero si quieres, puedes ponerlos.


    Otro componente, ActionView, tiene "helpers" (ayudantes), que permiten implementar cosas como campos con autocompletado y editores "in situ" (es mi traducción particular), con un par de líneas. Los editores estos, permiten editar un campo de un objeto sin falta de llegar a recargar la página en la que te encuentras. Son ideales para usarlos en la parte de administración de un sitio web. La implementación de widgets con el famoso AJAX es pan comido con rails :P.

    Otra cosa bastante importante, rails viene con un motor de tests integrado, que facilita tanto la tarea de desarrollar guiándose por ellos, que los uso desde la primera aplicación que hice con rails. Hay que tener en cuenta, que he aprendido ruby y rails al mismo tiempo. Si bien es cierto que tengo experiencia como programador web, considero un logro el haber llegado al nivel que tengo en el tiempo que lo he hecho.

    Me dejo mil cosas en el tintero, pero ahora mismo no tengo más tiempo.

    Bueno, espero al menos, haberos animado a entrar en el sitio web de rails [rubyonrails.com], a ver si os animáis y lo probáis.

    [ Padre ]
    Puntos de inicio:    5  puntos
    Modificador extra 'Informativo'   0  

    Total marcador:   5