Que Es Ruby on Rail1

8
--¿Que es Ruby On rails?-- Rails es un framework de desarrollo de aplicaciones web escrito en el lenguaje de programación Ruby. Está diseñado para hacer que la programación de aplicaciones web sea más fácil, haciendo supuestos sobre lo que cada desarrollador necesita para comenzar. Te permite escribir menos código realizando más que muchos otros lenguajes y frameworks. Además, expertos desarrolladores en Rails reportan que hace que el desarrollo de aplicaciones web sea más divertido. Éste asume que existe una forma "mejor" de hacer las cosas. La filosofía de Rails se basa en estos dos principios: DRY (del inglés, "Don't Repeat Yourself") - sugiere que escribir el mismo código una y otra vez es una mala práctica. "Convención sobre Configuración" - significa que Rails hace algunas suposiciones sobre lo que quieres hacer y cómo vas a hacerlo, en lugar de requerir que especifiques cada pequeña cosa a través de un sin fin de archivos de configuración. -Manera sencilla, agil, marco de trabajo. ¿Porque escoger ruby on rails? -Framework probado, usa MVC, ActiveRecord, Promueve buenas practicas de desarrollo, Usa MVC -Modelo:Formado por clases, cada clase es un modelo y cada modelo representa una tabla en la base de datos.(Estructuras de datos, Conexiones, Extraer datos de la BD, mandar al control para que lo pase a vista.). -Vista: Representación final de una petición, (Solo codigo HTML). -Controlador: Se encarga de la logica de la petición, es el puente entre el modelo y la vista, Es una clase con metodos y por cada uno de estos metodos, hay una vista. .erb: es la extencion de las vistas .rb: es la extencion de los controladores. ActiveRecord No hay que preocuparse de la BD y las querys, ya que hay una sola sintaxys. Esto acelera la productividad. Primer aplicacion-- >rails new Ejemplo #Crea diferentes archivos, instala las gemas que necesitará >cd Ejemplo #Creara una serie de carpetas y archivos. - app/ Contiene los controllers, models, views, helpers, mailers y assets para tu aplicación. - config/ Configura las reglas de ejecución de la aplicación, rutas, base de datos y más. config.ru Configuración Rack para servidores basados en Rack usados para iniciar la aplicación. db/ Contiene el esquema actual de tu base de datos, así como las migraciones de la base de datos. doc/ Documentación detallada de tu aplicación. Gemfile Gemfile.lock Estos archivos te permiten especificar qué dependencias de gemas son necesitadas para tu aplicación Rails. lib/ Módulos extendidos para tu aplicación. log/ Archivos de Log de tu aplicación. public/ La única carpeta vista por el mundo tal como es. Contiene los archivos estáticos y assets compilados. Rakefile Este archivo localiza y carga tareas que pueden ser ejecutadas desde la línea de comandos. La lista de tareas son definidas a través de los componentes de Rails. En vez de cambiar el Rakefile, deberías agregar tus propias tareas, añadiendo archivos al directorio lib/tasks de tu aplicación. README.rdoc Este es un breve manual de instrucciones para tu aplicación. Deberías editar este archivo para comunicar a otros lo que tu aplicación hace, cómo configurala y demás. script/ Contiene el script de Rails que inicia tu aplicación y contiene otros scripts usados para correr tu aplicación. test/ Pruebas unitarias, fixtures y otras pruebas. Éstos son cubiertos en Testing Rails Applications. tmp/ Archivos temporales (como archivos de caché, PID y archivos de sesiones). vendor/ Lugar para código de terceros. En una típica aplicación Rails, ésta incluye librerías y plugins.

description

kk

Transcript of Que Es Ruby on Rail1

Page 1: Que Es Ruby on Rail1

--¿Que es Ruby On rails?--

Rails es un framework de desarrollo de aplicaciones web escrito en el lenguaje de programación Ruby. Está

diseñado para hacer que la programación de aplicaciones web sea más fácil, haciendo supuestos sobre lo

que cada desarrollador necesita para comenzar. Te permite escribir menos código realizando más que

muchos otros lenguajes y frameworks. Además, expertos desarrolladores en Rails reportan que hace que el

desarrollo de aplicaciones web sea más divertido. Éste asume que existe una forma "mejor" de hacer las

cosas.

La filosofía de Rails se basa en estos dos principios:

DRY (del inglés, "Don't Repeat Yourself") - sugiere que escribir el mismo código una y otra vez es una mala

práctica.

"Convención sobre Configuración" - significa que Rails hace algunas suposiciones sobre lo que quieres

hacer y cómo vas a hacerlo, en lugar de requerir que especifiques cada pequeña cosa a través de un sin fin

de archivos de configuración.

-Manera sencilla, agil, marco de trabajo.

¿Porque escoger ruby on rails?

-Framework probado, usa MVC, ActiveRecord,

Promueve buenas practicas de desarrollo,

Usa MVC

-Modelo:Formado por clases, cada clase es un modelo y cada modelo representa una tabla en la base de

datos.(Estructuras de datos, Conexiones, Extraer datos de la BD, mandar al control para que lo pase a vista.).

-Vista: Representación final de una petición, (Solo codigo HTML).

-Controlador: Se encarga de la logica de la petición, es el puente entre el modelo y la vista, Es una clase con

metodos y por cada uno de estos metodos, hay una vista.

.erb: es la extencion de las vistas

.rb: es la extencion de los controladores.

ActiveRecord

No hay que preocuparse de la BD y las querys, ya que hay una sola sintaxys. Esto acelera la productividad.

Primer aplicacion--

>rails new Ejemplo #Crea diferentes archivos, instala las gemas que necesitará

>cd Ejemplo

#Creara una serie de carpetas y archivos.

- app/ Contiene los controllers, models, views, helpers, mailers y assets para tu aplicación.

- config/ Configura las reglas de ejecución de la aplicación, rutas, base de datos y más.

config.ru Configuración Rack para servidores basados en Rack usados para iniciar la aplicación.

db/ Contiene el esquema actual de tu base de datos, así como las migraciones de la base de datos.

doc/ Documentación detallada de tu aplicación.

Gemfile Gemfile.lock Estos archivos te permiten especificar qué dependencias de gemas son

necesitadas para tu aplicación Rails.

lib/ Módulos extendidos para tu aplicación.

log/ Archivos de Log de tu aplicación.

public/ La única carpeta vista por el mundo tal como es. Contiene los archivos estáticos y assets compilados.

Rakefile Este archivo localiza y carga tareas que pueden ser ejecutadas desde la línea de comandos. La lista

de tareas son definidas a través de los componentes de Rails. En vez de cambiar el Rakefile, deberías

agregar tus propias tareas, añadiendo archivos al directorio lib/tasks de tu aplicación.

README.rdoc Este es un breve manual de instrucciones para tu aplicación. Deberías editar este archivo

para comunicar a otros lo que tu aplicación hace, cómo configurala y demás.

script/ Contiene el script de Rails que inicia tu aplicación y contiene otros scripts usados para correr tu

aplicación.

test/ Pruebas unitarias, fixtures y otras pruebas. Éstos son cubiertos en Testing Rails Applications.

tmp/ Archivos temporales (como archivos de caché, PID y archivos de sesiones).

vendor/ Lugar para código de terceros. En una típica aplicación Rails, ésta incluye librerías y plugins.

Page 2: Que Es Ruby on Rail1

--Crear tu propia vista--

> rails generate controller welcome index # generador de controladores, con un metodo llamado index,

#Aplication controller agregas todos los metodos comunes a los controladores

Genera un view, llamado index

index_html.erb

<h1>Bienvenidos a nuestro blog</h1>

Hay que descomentar el #welcome#index de routes.rb

>rails server #arranca un servidor que trae el framework, permite visualizar nuestro proyecto en localhost:3000

--Agregar Logica a una vista--

(Programación , ciclos, sentencias, variables etc).

welcome_controller.rb

index.html.erb:

--ERB y Assets--

-ERB: es ruby dentro de la vista, limitado, no es el lugar de colocar mucha logica, si no para desplegar datos

-Etiquetas para desplegar condigo de ruby.

<%%>: evalua o analiza el codigo, pero no lo imprime

<%= %>: Muestra contenido.

<%= yield %>: Cargar el controlador en la vista

--Flexbox Grid-- #Para los css.

--Assets--

Imagenes, css, javascript,

aplication.css, require_tree. #Añade todas las hojas de stilo que encuentre en la carpeta y ya se pueden

utilizar.

Tambien funciona con los js.

--Hojas de Estilo--

El welcome.css.scss, la extencion es por que si vemos en el gemfile, hay una extencion sass que es

unpreporcesador de css, que permite anidar el codigo css.

Enlaza las hojas de estilo atravez de un helpper metod.

Si lo ve en modo de desarrollo enlaza el welcome y el aplication

--Layouts--

Si ya escribimos una cosa no hay por que escribirla despues. Hay que agrupar lo que tiene contenido en

comun

Cualquier pagina tiene

Page 3: Que Es Ruby on Rail1

Head

Body

Doctype

En lugar de ponerlo vista por vista, se crea un layout que esta referenciado por <%= yield%>:

index.html.erb: vemos que no solo se compone del h1, si no que hay mucho codigo agrupado, porque el

framework trabaja con layoyts, aplication.html.erb, genera eso, agrupa lo que tiene contendio en comun,

--Flujo de datos--

>rails g controller examples form

form.html.erb

<h1>Bienvenido <%= @nombre %></h1>

<%= form_tag: action => 'form' do %>

<p>Nombre:

<%= text_field_tag 'nombre_usuario', @name %>

</p>

<%= submit_tag 'Registrarse'%>

<%end%>

Uso de tags

helpers metodos axiliares que nos ayudan a crear contenido html, en este caso un formulario,

Que es lo que pasa, los metodos auxiliares, la infromaion la pasa como paramtro de una peticion post al

controlador, lo guarda en una variable @nombre, cuando manda el submit y lo muestra.

--Modelos--

>rails g model example

Convencion que utiliza rails el modelo va en singular y el controlador va en plural

Si nos vamos a db y a migrate vamos a ver un archivo, al ejecutarlo va a modificar la bd

class CreateExamples < ActiveRecord::Migration

def change

create_table :examples do |t| se cra la tabla

t.string :nombre almacenar nombre que va tener el campo

t.timestamps null: false campo predeterminado guardan la fecha en la que se crea y la fecha que se

modifica por ultima vex

end

end

end

class ExamplesController < ApplicationController

def form

@nombre = params[:nombre_usuario]

@nombres= Example.all

@ejemplo = Example.create({nombre: @nombre})

end

end

Page 4: Que Es Ruby on Rail1

Creamos los metodos faltantes en routes.db

get 'examples/form'

post 'examples/form'

>rake db:migrate # ejecuta las modificaciones si no existe la base de datos la crea

>rails console

Guardamos un nuevo registro, crea un nuevo registro en la base de datos exmaples a traves del modelo

example

--Base de Datos y Migraciones--

config, database.yml#Por defaul RoR utiliza sqlite

y crea la configuracion, nombre de la base de datos, usuario, pass, host, etc.

#Rake, la base de datos de pruebas se borra y se regenera cada que ejecutes el comando rake.

>rake db:create #crea la base de datos.

#Hay 3 entornos de ejecucion

-- Migraciones--

db, migrate , crea un archivo 2324343434,

#Clase de Ruby que Crea la tabla, Migraciones: Archivos que se encargan de hacer modificaciones a la base

de datos.

Crear, agregar campos, borrar tablas, etc,

Se portan como Pila: Ultimo archivo que agregas es el primero que sacas.

>rake db:migrate # hace los cambios en la base de datos.Metodo change

¿Como creamos la base de datos, sin haber tocado SQL?

Con migraciones.

Me equivoque, quiero cambiar un nombre, etc

>rake db:rollback # El inverso de change create table, drop table,..

Al mismo tiempo se crea schema.rb Guarda todo el squema de la BD

--Active Record--

>rails console

ActiveRecord: los metodos, automaticamente los construye en consultas sqlite

Example.all #extrae todos los elemento

Example.find(3)# Encuentra el que tenga el id 3

Example.first# selecciona el primero

Example.where(:nombre => "Jair")

Example.order("nombre")

Example.order("nombre DESC")#Ordena en manera descendente

Example.limit(5)

Example.limit(3).offset(3)

Example.order("nombre DESC").limit(3)

Page 5: Que Es Ruby on Rail1

--Scaffolding--

rails new blog

cd blog

rails g scaffold Article titulo:string descripcion:text

>rails generate model Article title:string body:text visit_count:integer # Es importante que sea el singular al

nombre de la tabla en la base y por convencion en ingles. Rails obtiene el plural del nombre del modelo

automaticamente.

#Despues del nombre, vamos a colocar los tributos de nuestro modelo, con dos puntos indicamos el tipo de

dato en la base de datos, el default es el string, varchar.

El nombre en ingles solo aplica en el nombre del modelo, los campos pueden estar en español.

Base o cosa momentanea para cosntruir aplicaciones

Cerara la migracion en db

>rake db:migrate

#en el article_controller se generaron todos los metodos que necesitamos.

index: junta todos los articulos

show: muestra un articulo en especifico

new : crea un nuevo articulo, crea la plantilla, no lo guarda,

create: en realidad lo guarda.

http://localhost:3000/articles # vamos a ver un listado de todos los articulos

>rails console

>Article.all = SELEC * FROM Article

>Article.find(1)

models, articles.rb, hereda de ActiveRecord

--Metodologia REST--

Con lo que funciona scaffolding

En routes.rb se creo la linea resources :articles

#Le dice al scaffolding como debe funcionar o como debe hacer las peticiones.

Cuando eliminas o editas te manda a la misma direccion

http://localhost:3000/articles:muestra actualiza, elimina

Explicar el index

REST: toma en cuenta

GET: lee elementos. mostrar un elemento

POST: crear elementos

DELETE: eliminar elementos

PUT: Modificar elementos

Modelo rest utiliza cada uno de ellos y simplifica las URLS

REST contempla en Rails

Crear

Mostrar

Page 6: Que Es Ruby on Rail1

Editar

Nuevo

Eliminar

HTTP solo trabaja con GET POST:las demas se ejecutan usando js

Exelente cuando hay que entregar algo rapido

Pero hay que hacerlo desde 0 paraentender lo que esta pasando

--Como funciona el controlador que genera el scaffolding--

app -> controllers -> articles_controller

Metodo index: se ejecuta cuando accedemos a la ruta del controlador, lo que hace es almacenar en una

variable articles todoslos artciculos a tarvez del active record

respond_to: envia el corrspondiente tipo dependiendo de lo que quiera el usuario,

La pasa al formato requerido, en este caso analizar el index

show: busca dentro delos parametros el correspondiente elemento

notice nos dice que fue lo que paso con el articulo

new: Carga el formulario, si ves la vista hay un form que tiene un parcial

en el form esta lo que realmente sucede, maneja errores cuando se cosntruyan las validaciones, por ejemplo

que el titulo sea obligatorio, se colocan en error_explanation

Edit: Encuentra el coreespondiente articulo y modificar un existente, utiliza el mismo parcial

create: retoma el trabajo que no termina new: genera uno nuevo a tarves de los parametros, es unmetodo

post.

si pudo guardalo cuando respionda lo redirija al show

update: guarda o actualiza edit: crea la estructura

Destroy: encuentra el artculo a tarvex de un id y despues lo destruye y te envia a lapagina de donde estan

todos los articulos

--Formularios con scaffolding--

>rails g scaffold User nombre:string pass:string mail:string hobbies:text programa:boolean cumple:date

horario:time

>rake db:migrate #generamos un nuevo tabla usuarios

Views, users,, edit y new hacen un render de un parcial el form:

scaffolding genera campos de manera inteligente dependiendo del tipo de dato. , no se lidia con lios de fecha

Deja listo para que lo hagas

Page 7: Que Es Ruby on Rail1

se crea alrededor de la variable user, se componta diferente cuando es new y edit, edit rellena con info de la

base de datos,busca con base al id

CREAR UN FORMULARIO CON LOS METODOS AUXILIARES: ver formulario de blog

crear un parcial _formulario y cambiar el form por formulario

Luego se crean los helpers metods

Actualizando el formulario

creamos hashe que tiene 4 registros, el varol que se le da al registro es x de 1 es decir el nombre

abreviado,,pero el que va maostra el label es x[0] el nombre completo

------------------------------------------------------------------------------------------------------------

--¿Ques es el archivo application.html.erb?--

<!DOCTYPE html>

<html>

<head>

<title>Prueba</title>

<%= stylesheet_link_tag "application", :media => "all" %>

<%= javascript_include_tag "application" %>

<%= csrf_meta_tags %>

</head>

<body>

<%= yield %>

</body>

</html>

¿Que son

<%= stylesheet_link_tag "application", :media => "all" %>

<%= javascript_include_tag "application" %>

<%= csrf_meta_tags %>?

Son helpers que nos permiten cargar archivos css, javascript y los meta. Vale aclarar que estos archivos están

dentro de la carpeta assets. Mientras que la línea:

<%= yield %>

Se encargará de cargar una vista, la vista que cargará el controlador.

Tal vez no entiendas que es todo esto, pero tranquilo, ya habrá tiempo para entenderlo bien. Simplemente voy

a decirte que este archivo application.html.erb será como el esqueleto de nuestra página web

Ahora entraremos en nuestro proyecto a la carpeta app -> controllers ahí dentro veremos un archivo con el

nombre del controlador que acabamos de crear, en mi caso principal_controller.rb. Si abrimos este archivo

con un editor veremos que tiene un aspecto como éste:

class PrincipalController < ApplicationController

def index

end

end

Seguramente habrás notado la ausencia de llaves. La clase definida se llama PrincipalController y se cierra

con un end al final. También habrás notado el signo menor (<) esto se usa para decirle a la clase que

heredará de otra clase, en este caso ApplicationController, una clase que viene en el núcleo de Ruby on Rails.

Page 8: Que Es Ruby on Rail1

Dentro de la clase hay un método llamado index, que se define con la palabra reservada def y no con function

como sí pasa en PHP. También debe utilizarse un end para finalizar el método.

Dentro de ese bloque escribiremos lo siguiente:

@saludo = "Hola mundo";

Esto es una variable. No te preocupes, más adelante veremos algo de sintaxis de Ruby donde aprenderemos

los tipos de variables. Así que la clase debería queda así:

class PrincipalController < ApplicationController

def index

@saludo = "Hola mundo";

end

end

Ahora guardaremos el archivo e iremos atrás a la carpeta views, dentro de app. Acá también hubo ruido,

seguramente veremos una carpeta llamada principal, o el nombre que le hayas puesto, y dentro de esta

carpeta un archivo de vista llamado index.html.erb con un aspecto similar a este:

<h1>Principal#index</h1>

<p>Find me in app/views/principal/index.html.erb</p>

Como verás es un simple código html, pero no tiene ni la etiqueta html, ni head, ni body, ni meta, nada. Es

simplemente como dije antes, esto se cargará dentro del archivo application.html.erb, por tanto este trozo de

código será lo que imprima:

<%= yield %>

Si vemos nuestro código fuente en nuestro navegador podremos comprobarlo.

Dentro de ese archivo index borraremos lo que está escrito y escribiremos lo siguiente:

<h1> <%= @saludo; %> </h1>

Esto es simple, dentro del controlador se crea una variable @saludo que luego mostraremos por pantalla

desde la vista con los tag de Ruby on Rails <%= @saludo %>, este tag tendrá un igual ya que mostrará

contenido, similar a un echo de PHP. Guardamos el archivo.

Bien, ahora sólo resta probar esto. Para ello explico cómo funciona las rutas en Ruby on Rails.

lo que harán las ruta es buscar un controlador y luego de la barra diagonal un método, de esta forma:

http://localhost:3000/controlador/metodo

En nuestro caso:

http://localhost:3000/principal/index