Sie sind auf Seite 1von 8

--Que es Ruby On rails?-Rails es un framework de desarrollo de aplicaciones web escrito en el lenguaje de programacin Ruby.

Est
diseado para hacer que la programacin de aplicaciones web sea ms fcil, haciendo supuestos sobre lo
que cada desarrollador necesita para comenzar. Te permite escribir menos cdigo realizando ms que
muchos otros lenguajes y frameworks. Adems, expertos desarrolladores en Rails reportan que hace que el
desarrollo de aplicaciones web sea ms divertido. ste asume que existe una forma "mejor" de hacer las
cosas.
La filosofa de Rails se basa en estos dos principios:
DRY (del ingls, "Don't Repeat Yourself") - sugiere que escribir el mismo cdigo una y otra vez es una mala
prctica.
"Convencin sobre Configuracin" - significa que Rails hace algunas suposiciones sobre lo que quieres
hacer y cmo vas a hacerlo, en lugar de requerir que especifiques cada pequea cosa a travs de un sin fin
de archivos de configuracin.
-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: Representacin final de una peticin, (Solo codigo HTML).
-Controlador: Se encarga de la logica de la peticin, 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 aplicacin.
- config/ Configura las reglas de ejecucin de la aplicacin, rutas, base de datos y ms.
config.ru
Configuracin Rack para servidores basados en Rack usados para iniciar la aplicacin.
db/
Contiene el esquema actual de tu base de datos, as como las migraciones de la base de datos.
doc/
Documentacin detallada de tu aplicacin.
Gemfile Gemfile.lock
Estos archivos te permiten especificar qu dependencias de gemas son
necesitadas para tu aplicacin Rails.
lib/
Mdulos extendidos para tu aplicacin.
log/
Archivos de Log de tu aplicacin.
public/ La nica carpeta vista por el mundo tal como es. Contiene los archivos estticos y assets compilados.
Rakefile Este archivo localiza y carga tareas que pueden ser ejecutadas desde la lnea de comandos. La lista
de tareas son definidas a travs de los componentes de Rails. En vez de cambiar el Rakefile, deberas
agregar tus propias tareas, aadiendo archivos al directorio lib/tasks de tu aplicacin.
README.rdoc Este es un breve manual de instrucciones para tu aplicacin. Deberas editar este archivo
para comunicar a otros lo que tu aplicacin hace, cmo configurala y dems.
script/ Contiene el script de Rails que inicia tu aplicacin y contiene otros scripts usados para correr tu
aplicacin.
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 cdigo de terceros. En una tpica aplicacin Rails, sta incluye libreras y plugins.

--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-(Programacin , 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. #Aade 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

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

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)

--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 espaol.
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

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

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 estn
dentro de la carpeta assets. Mientras que la lnea:
<%= 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 pgina 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 habrs notado la ausencia de llaves. La clase definida se llama PrincipalController y se cierra
con un end al final. Tambin habrs 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 ncleo de Ruby on Rails.

Dentro de la clase hay un mtodo llamado index, que se define con la palabra reservada def y no con function
como s pasa en PHP. Tambin debe utilizarse un end para finalizar el mtodo.
Dentro de ese bloque escribiremos lo siguiente:
@saludo = "Hola mundo";

Esto es una variable. No te preocupes, ms adelante veremos algo de sintaxis de Ruby donde aprenderemos
los tipos de variables. As que la clase debera queda as:
class PrincipalController < ApplicationController
def index
@saludo = "Hola mundo";
end
end
Ahora guardaremos el archivo e iremos atrs a la carpeta views, dentro de app. Ac tambin 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 vers es un simple cdigo 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
cdigo ser lo que imprima:
<%= yield %>
Si vemos nuestro cdigo 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 slo resta probar esto. Para ello explico cmo funciona las rutas en Ruby on Rails.
lo que harn las ruta es buscar un controlador y luego de la barra diagonal un mtodo, de esta forma:
http://localhost:3000/controlador/metodo
En nuestro caso:
http://localhost:3000/principal/index

Das könnte Ihnen auch gefallen