miércoles, 11 de mayo de 2011

rails

QUE ES RUBY:

Ruby es un lenguaje de scripts orientado a objetos, es software libre, hereda varias características de lenguajes como: perl, smaltalk, eiffel, ada y lisp. entre las características del lenguaje se encuentran:

·         La sintaxis es simple y consistente.
·         No se necesita declarar variables.
·         Gestión de memoria automático.

Potente a la hora de manejar cadenas y expresiones regulares.


QUE ES RAILS:


 rails es un framework para el desarrollo de aplicaciones web, es software libre, esta basado en el modelo vista controlador (mvc).

MVC (modelo vista controlador):

Se usa para el diseño de aplicaciones con sofisticados interfaces. Elementos del patrón:

·         Modelo: datos y reglas del negocio.
·         Vista: muestra la información del modelo al usuario.
·         Controlador: gestiona las entradas del usuario.


 








Un modelo puede tener varias vistas, cada una con su correspondiente controlador. Un ejemplo puede ser el de la información de una base de datos, que se puede presentar de diversas formas: diagrama de tarta, de barras, tabular, etc. Cada componente:

Modelo

Es responsable de:

              Acceder a la capa de almacenamiento de datos, lo ideales que el modelo sea independiente del sistema de almacenamiento.


              Define las reglas de negocio (la funcionalidad del sistema). Un ejemplo puede ser: “si la mercancía pedida no esta en el almacén, consultar el tiempo de entrega estándar del proveedor”.

              Lleva un registro de las vistas y controladores del sistema.

              Si estamos ante un modelo activo, notificará a las vistas los cambios que los datos puedan producir un agente externo (un fichero Bath que actualice los datos, un temporizador que desencadena una inserción, etc.)






Controlador
Es responsable de:

              Recibe los eventos de entrada (un clic, un cambio en uncampo de texto, etc.).

              Contiene reglas de gestión de eventos, del tipo "si eventos, entonces acción w". Estas acciones pueden suponer peticiones al modelo o a las vistas. Una de estas peticiones a las vistas puede ser una llamada al método "actualizar ()". Una petición al modelo puede ser"obtener_tiempo_de_entrega( nueva_orden_de_venta )".

Vistas

Es responsable de:

·         Recibe datos del modelo y los muestra al usuario.

              Tiene un registro de su controlador asociado(normalmente porque además lo instancia).

Puede dar el servicio de “actualización ()”, para que sea invocado por el controlador o por el modelo (cuando es un modelo activo que informa de los cambios en los datos producidos por otros agentes)




Un ejemplo de MVC con un modelo pasivo (aquel que no notifica cambios en los datos) es la navegación web, que responde a las entradas del usuario, pero no detecta los cambios en del servidor.  Pasos:


1.   El usuario introduce el evento.

2.    El controlador recibe el evento y lo traduce en una petición al Modelo (aunque también puede llamar directamente a la vista)

3.    El modelo (si es necesario) llama a la vista para su actualización.

4. Para cumplir con la actualización la Vista puede solicitar datos al Modelo.

5.El controlador recibe el control.

Framework:

Un framework es el conjunto de APIS, en muchos lenguajes, es un conjunto de clases y métodos que permiten desarrollar aplicaciones de manera mas sencilla.(API - interfaz de aplicaciones de programación, es una biblioteca de módulos reutilizables, que se usan en los códigos).


GEM:


Ruby Gems es un manejador de librerías de Ruby que hace muy sencillo instalar librerías. Ruby Gems es un gestor de paquetes para el lenguaje de programación Ruby que proporciona un formato estándar y auto contenido (llamado gem) para poder distribuir programas o librerías en Ruby, una herramienta destinada a gestionar la instalación de éstos, y un servidor para su distribución.

Clase:
Una clase es usada para construir un objeto. Es como un molde para objetos.

Estructura de un proyecto Rails:

              Rakefile: script para construir la aplicación; similar al makefilede make, pero hecho en Ruby

              app: contiene el código de la aplicación, incluyendo los modelos, controladores, vistas y helpers

              components: código reutilizable en forma de componentes

              config: ficheros de configuración de la aplicación, incluyendo la configuración de la base de datos

              db: migraciones de Active Record y ficheros de esquema de base de datos

              doc.: destinado a la documentación de la aplicación (usando rake appdoc para generar la documentación de los controladores y modelos)

              lib: código reutilizable específico de la aplicación

              log: los ficheros de registro se escriben en este directorio

              public: ficheros estáticos como HTML, CSS y JavaScript

              script: diversos scripts para iniciar y mantener la aplicación Rails

              test: pruebas unitarias, de integración y funcionales, junto con sus fixtures (datos de carga)

              vendor: aquí se instalan los plugins de otros fabricantes de software

Como se llama el archivo de configuración de base de datos en Rails:
El archivo se llama: config.

Que es un scaffold:

Es una característica de Rails, ya que permite tener las funcionalidades básicas de administración de datos de un modelo enun controlador. Estas funcionalidades son CRUD (Create, Retrieve,Update, Delete)- (Crear, recuperar, actualizar, borrar),tipicas de cualquier sistema transaccional.A este método se le denomina “scaffolding” y sirve para implementarde manera inmediata un entorno de administración temporal sobre elque trabajar.

Tipos de scaffolding:

      Dinámico: se genera en la memoria de la maquina y no permite la “customozacion” de la apariencia. Toman directamente los datos de la tabla y los presentan a través de un interfaz básico .Se crea introduciendo el siguiente código en el controlador.

      Código: scaffold: nombre_modelo

              Estáticos: Mediante este “scaffolding” se generan todas las vistas necesarias para la administración del sistema. Es decir secrean los archivos rhtml necesarios para la presentación de vistas en la carpeta app>views.

              Comando: ruby/script generate scaffold product admin
Mediante este comando se generan los directorios y archivos necesarios correspondientes a los métodos de CRUD alrededor del modelo product
en el controlador admin.

Que son las rutas REST en rails:

Rest:
Representational State Transefer (Representación de estado de transferencia). Es la arquitectura para aplicaciones que solicitan y manipulan recursos en la web utilizando los métodos están dares: HTTP, XML, o RSS. Ejemplo:

http://localhost:3000/users/1
http://localhost:3000/users/1/posts
http://localhost:3000/users/1/posts/1/
http://localhost:3000/users/1/posts/1/comments
http://localhost:3000/users/1/posts/1/comments/1

Que va en las capas modelo visto controlador: Modelo:

El modelo se refiere al modelo de datos, generalmente se generar con una herramienta ORM y es un conjunto de clases que vamos a utilizar para comunicarnos con nuestra base de datos. En algunos casos se usa otro tipo de modelos, un modelo puede ser cualquier clase que utilice nuestra aplicación, no necesariamente tiene que ser una clase de acceso a datos.

Vista:

La vista es la capa de la aplicación que ve el usuario, en otras palabras, es nuestra interfaz gráfica. En el ejemplo de una pagina web, nuestra vista seria el documento HTML que se le generar al usuario.

Controlador:

El controlador es la capa que controla todo lo que puede realizar nuestra aplicación, y esta compuesto por acciones que se representan con funciones en una clase. Por ejemplo, yo tengo mi controlador llamado “Clientes”, y este controlador puede realizar la sacciones “Crear”,”Editar”,”Listar” entre otras. Se podría decir que el controlador es lo que comunica los modelos con las vistas.

ORM:
(mapeo objeto-relacional) es una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el usado en una base de datos relacional (cumple con el modelo relacional), utilizando un motor de persistencia.

Mapear:

Es la acción de crear una manera de convertir un diagrama de objetos para que pueda ser mantenido automáticamente por una base de datos.

Active Record:
Es un objeto que representa una fila en una tabla de una base de datos, encapsula su acceso a la base de datos y añade lógica de negocio. Cada Active Record es responsable de si mismo, tanto en lo relacionado con persistencia como en su lógica de negocio.

Que es CSS y en capa del modelo vista controlador se usa:

CSS: hojas de estilo en cascada. Es un lenguaje usado para definir la presentación de un documento estructurado escrito en HTML o XML.Se encuentra en la capa Vista.

Jquery: Es el Framework de JavaScript (es un lenguaje de programación utilizado para crear pequeños programas encargados de realizar acciones dentro del ámbito de una página web.) pensada para interactuar con los elementos de una pagina web. Sintaxis: <htmlxmlns="http://www.w3.org/1999/xhtml">
 <head>
 <title>Prueba de jQuery</title>
<script src="jquery.js" type="text/javascript"></script> </head>
<body>
</body>
</html>


Entornos de desarrollo de rails:

Rails por defecto suele crear entornos en cada aplicación, pueden editarse o crearse otros al gusto del desarrollado. 


En el entorno de desarrollo (development)
config->environments->development.rb
el código de nuestra aplicación es cargado cada vez que se hace una petición al servidor. Esto baja el rendimiento de respuesta pero es perfecto para el desarrollo de la aplicación ya que no es necesario reiniciar el servidor cada vez que se hace un cambio en nuestro código. Por ello la línea
config.cache_classes es igual afalse.


El entorno de producción (production)
config -> environments -> production.rb
Es el adecuado para correr aplicaciones finalizadas. El código no es recargado en cada petición al servidor. Otra diferencia importante es que los reportes o avisos de error en nuestro código no son mostrados en pantalla.


El entorno de prueba (test)

config -> environments -> test.rb

Se utiliza exclusivamente para ejecutar las pruebas y comprobaciones en la aplicación. No se trabajará en este entorno para nada mas. Es importante recordar que los datos almacenados en la base de datos de prueba son destruidos por Rails en cada test que se realiza por lo que hay que tener especial cuidado en que la configuración de la sección prueba de nuestro archivo de configuración database.yml
No apunte a las bases de desarrollo o producción.

Hay varias formas de indicar a Rails qué entorno utilizar. Las dos massencillas:- Configurar el archivo config/environment.rb descomentando oescribiendo la línea env['rails_env'] = production, que haría corrernuestra aplicación en el entorno de producción. 

Iniciar el servidor en el entorno deseado de este modo y desde la consola de Rails:
ruby script/server -e production
.
Como se llama el archivo donde se visualizan los errores:
Un log es un registro de eventos durante un rango de tiempo en particular.
Migración y en que carpeta va dentro de las carpetas del proyecto rails .Migración:
Es el traspaso de información entre bases de datos. Si tenemos una aplicación sobre una base de datos como por ejemplo Access y posteriormente "crecemos" de manera que nos hace falta un sistema gestor de bases de datos potente, lo más seguro es que nos pasemos por Oracle, DB2, Informix, SQLServer o similares. En este caso, los datos, que estarán en formato "access" deberán pasar a formato "sqlserver" o formato para "oracle". La migración delos datos consiste en convertir los datos desde un sistema de base de datos a otro. Esta migración conlleva la creación de tablas o modificación de las existentes, cambios en algunos tipos de datos que existen en una base de datos. Va dentro de la carpeta DB.

En que capa suelen hacerse las validaciones en rails (validate):

En la capa Modelo del MVC.

Que es layout:

Los formatos o layouts de Ruby on Rails sirven para rodear el contenido de las páginas con una cabecera y un pie de página. Se puede conseguir el mismo efecto insertando la cabecera y el pie en todas las páginas, pero esto atentaría contra el principio DRY de "Note repitas" (Don't Repeat Yourself), por el que hay que evitar la duplicación de código tanto como sea posible.

Que es partials:

Significa que la clase está definida usando más de un archivo de código fuente, lo que se conoce como "code beside".La utilización de la palabra clave
partial
indica que otras partes de la clase, estructura o interfaz se pueden definir dentro del espacio de nombres. Todas las partes deben utilizar la palabra clave
partial
. Todas las partes deben estar disponibles en tiempo de compilación para formar el tipo final. Todas las partes deben tener la misma accesibilidad, ya sea public, private, etc. Si alguna de las partes se declara abstracta, todo el tipo se consider abstracto. Si alguna de las partes se declara sellada, todo el tipo se considera sellado. Si alguna de las partes declara un tipo base, todo el tipo hereda esa clase. Todas las partes que especifican una clase base deben concordar, pero las partes que omiten una clase base heredan igualmente el tipo base. Las partes pueden especificar diferentes interfaces base, pero el tipo final implementa todas las interfaces mostradas por todas las declaraciones parciales. Cualquier miembro de clase, estructura o interfaz declarados en una definición parcial está disponible para
todas las demás partes. El tipo final es la combinación de todas las partes en tiempo de compilación.

En que capa se mapean las relaciones entre las tablas:

En la capa Controlador.
                  
                  Tipos de relaciones entre modelos rails:

En las aplicaciones web orientadas a objetos sobre bases de datos, elmodelo consiste en las clases que representan a las tablas de la basede datos. En Ruby on Rails, las clases del modelo son gestionadas porActive Record. Por los generales, lo único que tiene que hacer el programador es heredar de la clase Active Record: Base, y el programa averiguará automáticamente que tabla usar y que columnas tiene. Las definiciones de las clases también detallan las relaciones entre clases con sentencias de mapeo objeto relacional .Por ejemplo, si la clase imagen tiene una definición
has_many:comentarios
, y existe una instancia de imagen llamada a, entonces a. Comentarios devolverá un array con todos los objetos comentario cuya columna
imagen_id
(en la tabla comentarios) sea igual a a.id.

Front-end y back-end:

Son terminos que se relacionan con el principio y el final de un proceso.

En diseño de software el front-end es la parte del software que interactúa con el o los usuarios y el back-end es la parte que procésala entrada desde el front-end. La separación del sistema en "frontends" y "back ends" es un tipo de abstracción que ayuda a mantenerlas diferentes partes del sistema separadas. La idea general es que elfront-end sea el responsable de recolectar los datos de entrada del usuario, que pueden ser de muchas y variadas formas, y procesarlas de una manera conforme a la especificación que el back-end pueda usar. La conexión del front-end y el back-end es un tipo de interfaz.

Metodologías de desarrolló:

Ágil:

El desarrollo ágil de software es un marco de trabajo conceptual de la ingeniería de software que promueve iteraciones en el desarrollo a lo largo de todo el ciclo de vida del proyecto. Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en cortos lapsos de tiempo. El software desarrollado en una unidad de tiempo es llamado una iteración, la cual debe durar de una a cuatro semanas. Cada iteración del ciclo de vida incluye: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación. Una iteración no debe agregar demasiada funcionalidad para justificar el lanzamiento del producto al mercado ,pero la meta es tener un demo (sin errores) al final de cada iteración. Al final de cada iteración el equipo vuelve a evaluar las prioridades del proyecto. Los métodos ágiles enfatizan las comunicaciones cara a cara en vez de la documentación. La mayoría de los equipos ágiles están localizados en una simple oficina abierta, a veces llamadas “plataformas de lanzamiento" (bullpen en inglés). La oficina debe incluir revisores, escritores de documentación y ayuda, diseñadores de iteración y directores de proyecto. Los métodos ágiles también enfatizan que el software funcional es la primera medida del progreso. Combinado con la preferencia por las comunicaciones cara a cara, generalmente los métodos ágiles son criticados y tratados como "indisciplinados" por la falta de documentación técnica.

Tradicional:

Estas metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto software. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada [42].Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar .Entre las metodologías tradicionales o pesadas podemos citar:

          RUP (Rational Unified Procces)
          MSF (Microsoft Solution Framework)
          Win-Win Spiral Mode
          Iconix



Que metodología de desarrollo de software emplearía para rails:

Usaría la metodología de desarrollo ágil, ya que rails nos brinda un entorno de trabajo sencillo en el que podemos crear aplicaciones de una manera rápida, fácil y sin complicaciones.
Plugins en Rails:
(Plug-in) Programa que puede anexarse a otro para aumentar sus funcionalidades (generalmente sin afectar otras funciones ni afectarla aplicación principal). No se trata de un parche ni de una actualización, es un módulo aparte que se incluye opcionalmente en una aplicación. El plugin crea una lista de tareas, notas, ideas, etc. desde el código de nuestra aplicación. Lee todos los archivos .rb de nuestro proyecto buscando por las etiquetas aceptadas por el plugin y crea las listas correspondientes. Para esto se basa en un formato en los comentarios del código.
Fundamentos de la web:
El éxito de la web se basa en dos factores fundamentales: el protocolo HTTP y el lenguaje HTML. El primero permite una implementación sencilla de un sistema de comunicaciones que permite enviar cualquier fichero de forma fácil, simplificando el funcionamiento de lservidor y posibilitando que servidores poco potentes atiendan cientos o miles de peticiones y reduzcan de este modo los costes de despliegue. El segundo, el lenguaje HTML, proporciona un mecanismo sencillo y muy eficiente de creación de páginas en lazadas .El protocolo HTTP (Hypertext Tranfer Protocol) es el protocolo principal de la World Wide Web. Es un protocolo simple, orientado a conexión y sin estado. Las cuatro características principales del diseño web son:

1.       El contenido

2.       La tecnología

3.       Los aspectos visuales

4.       Los aspectos económicos

Un error frecuente en el desarrollo Web es que los sitios se construyen más para los diseñadores y sus necesidades que para los verdaderos usuarios. La clave para obtener el éxito en el diseño de un sitio Web funcionales pensar siempre teniendo en cuenta el punto de vista del usuario.

Estructura de un documento HTML:

<html><head>
Etiquetas y contenidos del en cabezado Datos que no aparecen en nuestra pagina pero que son importantes para catalogarla: Titulo, palabra clave,...
</Head><body>
Etiquetas y contenidos del cuerpo Parte del documento que será mostrada por el navegador: Texto e imagine
s</body></html>