Abriendo una Web App Ruby On Rails- Welcome aboard 1ª Parte


Finally..Repasando conceptos y analizando la aplicación web WebShop hecha en Ruby On Rails en la que puedes ver en mi cuenta de GitHub, que sirvió de base para un curso de Desarrollo de Ruby On Rails de ASPGems, voy a analizar lo que he hecho y cómo funciona, para tener una referencia en caso que estés comenzando con la programación Ruby On Rails a entender los conceptos elementales de cualquier aplicación y sea dicho de paso para ordenar ideas.

Comencemos. Presupongo que tienes ya instalado Ruby, Gems y Rails con todo lo necesario bajo Linux (Ubuntu) o Mac, si tienes Windows es posible desarrollar, pero mejor pásate al otro lado de la luz por muchas razones por las que no es el caso, pero vamos tú mismo. Cómo decía, si ya tienes preparado el ecosistema de desarrollo con tu IDE preferido, aunque te aconsejo JetBrains RubyMine y una cuenta en GitHub, vale pues ya estamos listos.

Primero pensemos en la estructura que vamos a tener en nuestra aplicación, por ejemplo tendremos una entrada de Login, la principal cuando pongamos la URL, en la que nos pedirá los credenciales de entrada necesarios y básicos para identificarnos en nuestro sistema, el email y una clave de acceso a la aplicación, si no tenemos una cuenta para entrar en la aplicación, debemos permitir al usuario que se pueda crear una, con lo que dispone de un formulario de inscripción al sistema con sus datos. Una vez dentro tendremos un listado de productos y un listado de usuarios que en función al perfil de dicho usuario verá unas opciones u otras, es decir, si es “admin” tendrá acceso a todo y si es “usuario” con opciones ocultas. Los productos pueden ser comentados y puntuados por cualquier usuario, por tanto cuando veamos un producto en concreto veremos los detalles y los comentarios que han dejado los usuarios para dicho producto en concreto.

Para la aplicación web WebShop, necesitamos varias tablas, products, reviews y users. Existe una relación entre ellas como es lógico, de tal forma que si un usuario puede hacer un comentario, debe existir un enlace entre ellas, es decir, debe existir una relación entre users y reviews a través de un id y por otro lado en products también existe una relación con reviews para los comentarios a través  del campo id, ambas están relacionadas en la tabla reviews con los campos products_id y users_id, si tienes dudas, puedes ver el schema de las tablas aquí.

Ahora debemos pensar cómo van a responder a nuestras peticiones URL y los protocolos o verbos que van a seguir, es decir, cuando hagamos la petición de http://localhost:3000/products necesitamos saber en REST que HTTP verb necesitamos llamar (GET, POST, PUT o DELETE) y las posibles 7 acciones, index que devuelve una lista de recursos, create que crea un nuevo recurso de los datos de solicitud POST añadiendo a la colección, new crea un nuevo recurso y lo pasa al cliente, como un formulario que se crea para que lo rellene el usuario, show devuelve los contenidos de los recursos que se han identificado en params[:id], update actualiza los contenidos del recurso identificado params[:id] con los datos asociados a la solicitud, edit devuelve los contenidos del recurso identificado params[:id] en un formato adecuado para la edición y por último destroy que destruye un recurso identificado params[:id], estas son las operaciones de CRUD Create, Read, Update y Destroy. Si no necesitamos todas ellas podemos utilizar “: only” o “: except” en el fichero de routes.rb. Los más famosos, por así decirlo son, GET y POST en nuestras peticiones Web y los que menos suenan son PUT y DELETE. Estos conceptos hay que tenerlos muy claros, ya que la misma petición si hacemos por ejemplo la llamada a  /products con el verbo GET toma la acción de index, mientras que /products con el verbo POST toma la acción de create.

En nuestro caso preparamos las rutas para que las peticiones y la configuración de nuestro fichero de routes.rb tendríamos:

get     “login”         => “sessions#new”,          :as => “login”
get     “logout”      => “sessions#destroy”,     :as => “logout”
get     “signup”      => “users#new”,                :as => “new_user”

usando en modo comando tecleamos rake routes, obteniendo como resultado:

login         GET     /login(.:format)                  sessions#new
logout       GET    /logout(.:format)                sessions#destroy
new_user  GET    /signup(.:format)                users#new

para eso recomiendo leer si no sabes sobre este tema las guías de Rails que te aproxima a este concepto, Rails Routing from de outside in.

Seguiremos analizando la aplicación….

Un comentario en “Abriendo una Web App Ruby On Rails- Welcome aboard 1ª Parte

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s