Usando Scaffolding

En el post anterior instalamos MySQL y las librerías necesarias para usarlo en nuestras futuras aplicaciones.

Vamos a generar nuestro primer CRUD (Create, Read, Update y Delete) en rails usando Scaffold Generators, para esto veamos que es Scaffolding.


Scaffolding: Es una vía rápida de agregar una clase de Active Record creando una serie de acciones estandarizadas para lectura, consultas, creación, actualización y eliminación de datos en nuestra aplicación. Estas acciones estandarizadas agregan el controlador lógico y una plantilla por default que muestra los campos que se van a desplegar y que tipos de entradas se usarán.


Ahora veamos como funciona en la práctica, si no quedó muy clara la definición con este ejemplo no habrá dudas.

Crear una aplicación nueva:
$ rails Video -d mysql


Crear Bases de Datos para la aplicación:
$ cd Video
$ rake db:create:all


Usando Scaffold
Vamos a usar el comando generate que se encuentra en la carpeta script de nuestra applicación.
ruby script/generate


Después usaremos el parametro scaffold que indica que vamos a usar este método para generar nuestro modelo.
scaffold


Por último asignamos el nombre de nuestro modelo y los campos que se utilizarán en la base de datos para almacenarlos.
Pelicula titulo:string descripcion:text anio:string


Juntando todo tendremos lo siguiente y lo ejecutamos:
$ ruby script/generate scaffold Pelicula titulo:string descripcion:text anio:string
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/peliculas
exists app/views/layouts/
exists test/functional/
exists test/unit/
create test/unit/helpers/
exists public/stylesheets/
create app/views/peliculas/index.html.erb
create app/views/peliculas/show.html.erb
create app/views/peliculas/new.html.erb
create app/views/peliculas/edit.html.erb
create app/views/layouts/peliculas.html.erb
create public/stylesheets/scaffold.css
create app/controllers/peliculas_controller.rb
create test/functional/peliculas_controller_test.rb
create app/helpers/peliculas_helper.rb
create test/unit/helpers/peliculas_helper_test.rb
route map.resources :peliculas
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/pelicula.rb
create test/unit/pelicula_test.rb
create test/fixtures/peliculas.yml
create db/migrate
create db/migrate/20090614172420_create_peliculas.rb


Para saber como se generan las tablas con scaffolding, hay que abrir este archivo: db/migrate/20090614172420_create_peliculas.rb



Este archivo crea la tabla llama peliculas que estará ligada al modelo Pelicula. Y los parámetros que asignamos se mostrarán como las columnas de la tabla con su tipo.

Aplicar la migración:
Usando el comando rake db:migrate nos genera la tabla en nuestra base de datos.
$ rake db:migrate
(in /home/makio/www/Video)
== CreatePeliculas: migrating ================================================
-- create_table(:peliculas)
-> 0.0813s
== CreatePeliculas: migrated (0.0817s) =======================================


Ya explicado esto, corramos la aplicación en el servidor:
$ script/server
=> Booting WEBrick
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-06-14 12:36:03] INFO WEBrick 1.3.1
[2009-06-14 12:36:03] INFO ruby 1.8.7 (2008-08-11) [i486-linux]
[2009-06-14 12:36:08] INFO WEBrick::HTTPServer#start: pid=6851 port=3000


Abrimos nuestro navegador y entramos a esta dirección: http://127.0.0.1:3000/peliculas


Nuestro primer controlador está listo, ya tenemos una página funcional para agregar películas, editarlas, eliminarlas y listarlas. Ya por último dejo unos screenshots de algunas funciones, ya queda de tu parte usarlas para ver la funcionalidad.

Agregar Pelicula


Listar Peliculas


Espero esto les sea de mucha utilidad y haya quedado claro el funcionamiento de scaffolding, en el siguiente post haremos esto mismo pero de manera manual.

Configurando MySQL en Ruby on Rails

Durante las siguientes entradas a este blog vamos a desarrollar una pequeña aplicación pero para eso utilizaremos MySQL. Ruby on Rails no trae por defecto ninguna base de datos así que tendremos que instalar MySQL y el conector que usa Rails.

Instalar MySQL

$ sudo apt-get install mysql-server mysql-client


Instalar Librerías
$ sudo apt-get install libmysql-ruby libmysqlclient-dev


Instalar el conector con gems
$ sudo gem install mysql


Una vez instalado lo anterior, probemos que esté funcionando correctamente:

Crear una nueva aplicación: Se utiliza el comando rails pero le agregamos el parámetro -d para indicar que vamos a usar MySQL como nuestra base de datos.

$ rails TestDB -d mysql


Comprobar archivo de configuración: Para ver la configuración usada para la conexión con la base de datos abrimos el archivo que se encuentra en TestDB/config/database.yml

En este archivo vemos que existen 3 conexiones diferentes: development, test y production. Las tres conexiones contienen los mismos parámetros el único que cambia es el parámetro database: éste es el nombre de la base de datos que vamos a usar, el nombre empieza con el nombre que le dimos a nuestra aplicación continuando con un guión bajo y el ambiente de desarrollo en el que estemos trabajando.
development:
adapter: mysql
encoding: utf8
reconnect: false
database: TestDB_development
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock


Ya explicado esto corramos la aplicación en el servidor:
$ cd TestDB
$ ruby script/server
=> Booting WEBrick
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-05-26 23:02:31] INFO WEBrick 1.3.1
[2009-05-26 23:02:31] INFO ruby 1.8.7 (2008-08-11) [i486-linux]
[2009-05-26 23:02:36] INFO WEBrick::HTTPServer#start: pid=5508 port=3000


Ahora en el navegador entremos a la aplicación que está corriendo en http://127.0.0.1:3000, al estar en la pagina da click en About your application’s environment y verás el siguiente error:



Este error ocurre por que no se ha creado la base de datos, se tendrá que crear la base de datos TestDB_development ya sea en la terminal o en cualquier gestor de base de datos que tengan instalado. Crearla, refresca la página y mostrará los datos de la aplicación:



Espero que quede claro esta parte de la configuración de MySQL, si tienen alguna duda o problema dejen un comentario, en la siguiente entrada vamos a generar nuestro primer controlador de forma manual y usando scaffold.

MVC (Model-View-Controller)

Rails usa la arquitectura model-view-controller, para esto veamos la definición de MVC de wikipedia:

Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario y la lógica de control en tres componentes distintos.




La definición puede que no deje claro que es y como es que trabaja, veamos parte por parte esta arquitectura y cual es el objetivo de cada una:

Models: Estos son responsables de la comunicación con el back-end de los datos almacenados, que seria una base de datos (SQLlite, MySQL, SQL Server, etc).

Views: Las vistas son responsables de lo que ve el usuario el front-end de la aplicación; estos contienen una mezcla de HTML y el uso de algún lenguaje embebido (en este caso ruby) para generar contenido dinámico.

Controllers: Los controladores son los responsables de saber que hacer con las entradas de los usuarios. Manejan los requests del navegador, llaman las funciones apropiadas sobre los objetos del modelo e interpreta las vistas en HTML puro para regresarlo al navegador.

Instalando Ruby on Rails - Ubuntu

Por cuestiones de tiempo no había podido iniciar con temas ya prácticos, ya estaré actualizando mas seguido las entradas del blog.

Por lo pronto escribiré paso a paso como instalar Ruby on Rails en Ubuntu, yo estoy usando Ubuntu 9.04 pero no habra problemas con otras versiones, si es el caso no duden en comentar en esta entrada para checar el problema y tratar de solucionarlo.


Instalar Ruby

$ sudo apt-get install ruby-full build-essential


Instalar Gems 1.3.1
$ wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
$ tar xzvf rubygems-1.3.1.tgz
$ cd rubygems-1.3.1
$ sudo ruby setup.rb
$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
$ sudo gem update --system


Instalando Rails
Haremos uso de Gems para instalar rails.
$ sudo gem install rails


Siguiendo estos sencillos pasos ya tendras Ruby y Rails instalados y listos para usar.

Creando la primer aplicacion en Rails

$ rails RailsApp


Lanzando la aplicacion

$ cd RailsApp
$ ruby script/server
=> Booting WEBrick...
=> Rails 2.1.0 application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-07-28 04:39:17] INFO WEBrick 1.3.1
[2008-07-28 04:39:17] INFO ruby 1.8.6 (2007-09-24)
[2008-07-28 04:39:17] INFO WEBrick::HTTPServer#start: pid=6860 port=3000



La aplicacion ya esta corriendo en http://0.0.0.0:3000 o 127.0.0.1:3000, al abrirla en tu navegador veras la siguiente pagina:



Con esto queda terminado los pasos para instalar Ruby on Rails. Espero que les sea de mucha utilidad.

Bienvenidos

En este espacio encontraras temas relacionados con Ruby on Rails, espero que sea de su agrado espero sus sugerencias, comentarios, articulos o cualquier cosa que pueda servir para asi todos poder aprender este gran framework.