que es ruby on rail1
DESCRIPTION
kkTRANSCRIPT
![Page 1: Que Es Ruby on Rail1](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/1.jpg)
--¿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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/2.jpg)
--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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/3.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/4.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/5.jpg)
--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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/6.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/7.jpg)
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](https://reader036.vdocumento.com/reader036/viewer/2022072002/563db93f550346aa9a9b77ef/html5/thumbnails/8.jpg)
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