Ruby on Rails #08: Framework Rails - LPC-Ltda/Ruby-on-Rails GitHub Wiki

Verificando instalaciones

$ruby -v

Retorna la versión de Ruby

$rails -v

Retorna la versión de Rails

Tenemos Sublime text 2

Tenemos **WEBrick **como servidor local

Comando Rails (Crear aplicaciones)

$rails new LPC

Creamos una nueva aplicación LPC

Al generar la aplicación muestra la creación de muchos directorios y archivos, al final corre el programa bundle, el que instala las gemas y sus dependencias.

En el directorio de la aplicación se ha creado el archivo Gemfile donde se custodia la versión de las gemas utilizadas. Para cualquier inserción o modificación tendremos que correr el programa Bundler.

$ rails server

Pone en marcha el servidor WEBrick

El URL del servidor es localhost:3000

en el directorio **public **estan:

  • los archivos que vamos a tener acceso desde cualquier parte de la aplicación y los compiladores por assets (una especie de memoria para no tener que realizar muchas peticiones al servidor).
  • también guarda las páginas web estáticas y las que muestran las respuestas 404, **422 **y 500.

Realice prueba con archivo estatica.html desplegado en el servidor

Directorios de una aplicación

APP

Es el directorio más usado:

  • Assets: imágenes, hojas de estilo y javascript
  • Controllers: Es donde ubicamos nuestras clases contraladores. Por defecto ya existe un archivo llamado aplication_Controller.
class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
end

El comando protect_from_forgery es un tipo de seguridad contra el cross-site (hackeo suplantando sesiones de usuarios) Al introducirla aquí será efectiva en todos los controladores generados.

  • Helpers: Contiene Modulos Ruby y su función es llevar la lógica compleja de nuestra aplicación. La idea es usar los módulos para simplificar la escritura del código.

  • Mailers: Cuando nuestras aplicaciones manejen correo electrónico aquí estarán sus archivos.

  • Models: Son clases Ruby que heredan de ActiveRecord. Intermediario con las bases de datos.

  • Views: plantillas que serán mostradas con los resultados de la aplicación. Bajo la sub-carpeta Layouts tenemos la estructura principal HTML que armará todas las páginas. Esta se llama application.html.erb y por supuesto podemos modificarla según nuestras necesidades. Se pueden crear varias vistas, las que están relacionadas cada una con un método del controlador vinculado, con el que coincidirán en nombre.

Config

Contiene los archivos relacionados con la configuración de nuestra aplicación. Los cambios realizados requieren reiniciar el servidor para cargar.

  • Routers.rb: Es el medio se le indica a nuestra aplicación a que controlador y método en concreto debe acudir cuando tenga una petición. Es un archivo muy usado.

  • config/environment/: contiene tres archivos y de acuerdo con el modo en que realizamos nuestra aplicación, test, desarrollo o producción, cargará las variables con sus respectivos valores. En el directorio /config/ disponemos del archivo application.rb, en el cual se pueden incluir variables del entorno que se cargaran independiente del mismo. En el caso que una variable este repetida prevalecerán las variables de entorno.

  • Database.yml: archivo tipo YAML, contiene la configuración de la base de datos para cada entorno de ejecución existente, test, desarrollo y producción.

DB

En este directorio se encuentra nuestra base de datos Sqlite3. Aquí es donde podemos llevar a cabo los procesos de migración que Rails utiliza como paso previo antes de hacer efectivas las tablas reales. Aquí controlamos las distintas versiones de la base de datos; como es normal en un proceso de creación vamos modificándola a medida que añadimos funcionalidades, por lo que podemos regresar o avanzar, hacer y deshacer cambios si lo estimamos necesario.

PUBLIC

En ella tenemos las distintas plantillas HTML estáticas, las respuestas a los errores 404, 422 y 500.

TEST

Contiene las pruebas unitarias heredadas del módulo TEST::Unit de Ruby. Contiene distintas carpetas correspondientes a las pruebas de los controladores, los modelos y la funcionalidades. Siendo estos últimos donde probamos el flujo de una acción concreta usando varios controladores y modelos.

Primera Aplicación:

1.- El usuario introduce la URL http://www.miaplicacion/usuario/login

2.- nuestro archivo config/routes.rb recibe la petición y resuelve a que controlador y método debe mandar la petición.

3.- Una vez terminado de ejecutar el código del método, se dirige a al directorio views/nombre_del_controlador/nombre_del_metodo.html.erb. Por ejemplo si nuestro controlador se llama _UsuariosController _y el método ejecutado es login, la vista que mostraremos es views/usuarios/login.html.erb

4.- Por último se muestra al usaurio.

Esta consulta no tiene consulta a la base de datos. Cuando así sea, antes del tercer paso debemos realizar el proceso.

El archivo routes.rb hace una descomposición de la url:

www.aplicacion.com/usuario/login

usuario: Controlador login: Método de acción

Si indicamos un tercer apartado lo toma como un parámetro, el cual recibe el método login en este caso.

www.aplicacion.com/usuario/login/30

Podemos además realizar una petición de un archivo con diferentes formatos añadiendo al parámetro la correspondiente extensión .xml, .pdf, etc.

Generar Controlador-Vista

Crearemos nuestro controlador llamado home con tres métodos (index, quienes_somos y contacto) usando el comando

$ rails g controller home index quienes_somos contacto                #(generate se redujo a "g")

Se crearán una serie de ficheros:

  • Controlador: llamado home_controller.rb
  • Las tres vistas: llamadas contacto.html.erb, quienes_somos.html.erb, e index.html.erb todas en la carpeta views/home
  • Helpers: llamado home_helper.rb ubicado en app/helpers/
  • Test: llamado home_controller_test.rb ubicado en test/functional
  • Hojas de estilo y Javascript

El nombre del controlador es home. En nuestro editor tendremos acceso a la clase _home_controller _junto a sus tres métodos.

La página de inicio será nuestro método index, para ello modificamos el archivo routes.rb en el directorio config con la instrucción

root :to => 'home#index'

lo cual quiere decir que se ruteará por el _index _del controlador home. Esto permite que al acceder al URL localhost:3000 se llegue al index, para acceder a los otros métodos se debe agregar el controlador y método al URL

localhots:3000/home/contacto

por ejemplo

ESTE EJEMPLO NO ME RESULTABA, BUSQUE EN GOOGLE Y ENCONTRÉ QUE HABÍA QUE INSTALAR UN SOFTWARE "NODE" LO INSTALÉ Y FUNCIONÓ!!

Plantillas Dinámicas

Las variables de cada método nos permiten hacer dinámicas las plantillas.

en /app/views/layout/aplicaction.html.erb

Es la estructura principal de todas las vistas, en ella el método _yield _nos permite insertar cada método en ella.