La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1.

Presentaciones similares


Presentación del tema: "Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1."— Transcripción de la presentación:

1 Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1

2 ¿Qué es Ruby? “Un lenguaje de programación dinámico y de código abierto enfocado en la simplicidad y productividad. Su elegante sintaxis se siente natural al leerla y fácil al escribirla” https://www.ruby-lang.org/es/ Creado por Yukihiro “Matz” Matsumoto

3 ¿Cuáles son sus características principales? Todo es un objeto Manejo de excepciones Garbage collector Manejo de hilos NO existen puntos y comas

4 ¿Cuál es el historial de versiones de Ruby? 1.0 1995 …. 1.8 2007 1.9 2007 2.1 2013 2.2 2015 2.3 2016

5 ¿Qué es Ruby on Rails? “Ruby on Rails es un entorno de desarrollo web de código abierto que está optimizado para la satisfacción de los programadores y para la productividad sostenible. Te permite escribir un buen código evitando que te repitas y favoreciendo la convención antes que la configuración” Rails fue creado en 2003 por David Heinemeier Hansson y desde entonces ha sido extendido por el Rails core team a más de 2.100 colaboradores. http://www.rubyonrails.org.es/

6 ¿Qué es Rails? Es un framework para el desarrollo web escrito en Ruby. Sus principios de desarrollo son: "Don't Repeat Yourself" DRY Un programador sólo necesita especificar los aspectos no convencionales de la aplicación Convención sobre Configuración COC

7 ¿Qué necesita Ruby on rails para funcionar? Lenguaje Ruby on rails versión 2.2 o superior. Estable 2.2.x. Última 2.3 Gemas: Paquetes de instalación Una instalación de un motor de base de datos. Por defecto usa SQLite 3

8 ¿Cuál es el historial de versiones de Ruby on Rails? 1.0 Dic 2005 …. 4.0 Jun 2013 4.1 Sep 2014 4.2 Dic 2014

9 Instalación en Linux Para Ubuntu

10 RVM Ruby versión manager

11 1) instalación linux (probado en ubuntu 15.4) Actualizar el gestor de paquetes sudo apt-get update Instalar el curl sudo apt-get install curl Conseguir llave de seguridad para usar el rmv Ejecutar la petición al rmv \curl -sSL https://get.rvm.io | bash -s stable –rails Probar ejecutando comando como rails –v ruby –v Instalar nodejs para ejecución de entorno de javascript sudo apt-get install nodejs Instalación Linux

12 Iniciar en el terminar el rvm La ruta que se pone en el source cambia según dónde se halla hecho la instalación del rvm

13 2. Crear una nueva aplicación rails new nombreApp 3. En la carpeta de la aplicación en el archivo gemfile descomentar la línea gem 'therubyracer'. Guardar 4. Ejecutar el comando bundle install Instalación Linux

14 Instalación en windows

15 Resultado de la instalaciónrail

16 Instalación Windows ( con Rails installer)

17 ¿Cuál es el ambiente del rails installer?

18

19 Instalación ( con Rails installer)

20 Configuración instalador

21 Buscar los archivos bundle.bat y rails.bat en C:\RailsInstaller\Ruby2.2.0\bin Reemplazar la segunda línea por: Solucionar bug del rails installer @"%~dp0ruby.exe" "%~dpn0" %*

22 Instalar NodeJs Ingresar a la pagina de nodejs, descargarlo e instalarlo para que función bien la parte de javascript de la aplicación

23 ¿Cómo crear un nuevo proyecto? Crea un proyecto con el nombre que se indica. Crea una estructura de directorios para proyectos. $ rails new blog blog: nombre del proyecto En la carpeta en la que deseemos En Linux autenticarse como root primero

24 Importante bundle install que instala las gemas que se requieran.

25 Descomentar la gema “the ruby racer”

26 Se ha creado un proyecto funcional, luego sólo es necesario subir el servidor Comando inicio servidor En la consola escribir rails server. Para que funcione se debe estar dentro de la carpeta app de proyecto creado. Para parar el servidor escribir ctr + c Puerto 3000

27 Página por defecto ruby on rails

28 Carpeta de los proyectos CarpetaFunción /app Aquí se organizan los componentes de la aplicación. Tiene subdirectorios que contienen la vista (view y helpers), los controladores (controllers) y la lógica de negocio (models). /app/controller Aquí se deben ubicar las clases controller. Un controller maneja un requerimiento web del usuario. /app/helpers Contiene todas las clases helper que asisten a las clases model, view y controller. Esto ayuda a mantener el código del modelo, la vista y los controladores lo más reducido, enfocado y despejado posible. /app/models Contiene las clases que modelan y empaquetan los datos almacenados en la base de datos de la aplicación /app/view Contiene las plantillas para completar con los datos de la aplicación, convertir a HTML y devolver al browser del usuario.

29 Carpeta de los proyectos CarpetaFunción /conf Aquí se ubica el código de configuración que requiere una aplicación. Incluye configuración a bases de datos, y estructura del ambiente. Permite configurar ambiente de pruebas, desarrollo y producción /db En este directorio se mantienen los scripts para el manejo de la base de datos relacional /lib Aquí se almacenan bibliotecas específicas de la aplicación /log Aquí van los logs de errores. /public Tiene todos los archivos que no cambian, tales como javaScript (public/javascripts), gráficos (public/images), hojas de estilo (public/stylesheets) y archivos HTML (public)

30 ¿Qué son las gemas? Son plugins y/o códigos añadidos a nuestros proyectos Ruby on Rails, que permiten añadir nuevas funcionalidades.

31 Las gemas que requiere la aplicación se pueden configurar en el archivo GemFile. Se requiere tener instalado Bundler para el manejo de las gemas. Para hacer uso de las gemas allí configuradas se usa el comando install bundle Si no se indica la versión se instala la última. ¿Qué son los archivos GemFile?

32 ¿Cómo aplica Ruby on rails MVC?

33 “ Routing is the mechanism by which requests (as specified by a URL and HTTP method) are routed to the code that handles them” ¿Qué es el enrutamiento en una aplicación web?

34 Haciendo ajustes Abrir sublime desde consola subl &

35 Crear un controlador y una vista Para crear un controlador y una vista escribir el siguiente comando rails generate controller welcome index Indica que se creará un controllador llamado welcome y una vista llamada index

36 Modificar información de la vista Modificar app/views/welcome/index.html.erb para escribir el siguiente texto

37 Adicionar lógica a la vista Código ruby Código Ruby con = significa que se va a imprimir algo. Variables @: son variables de instancia disponibles en todos los métodos de una clase Se crea la variable de instancia en el controlador y en la vista así

38 ¿Cómo se ve?

39 Crear código en la vista

40 Ciclo dentro de la vista

41 CSS Deben ir en la carpeta assets, dentro de nombreproyecto.css.scss los estilos

42 Layouts La idea básica es no repetir código Yield: Ejecuta la página que se estructura y se mete dentro de un layout. Así se evita la repetición de código. Se deben ubicar dentro de la carpeta layout

43 Layouts ( 2) Indicar en el controlador el layout

44 Modificar home page Se debe indicar que la página por defecto de la aplicación será la página creada anteriormente Abrir el archivo config/routes.rb. Descomentar la línea que inicia con Root Indica que se mapee cualquier solicitud del root al controlador en el método index

45 MODELO en Ruby on rails

46 ¿Cómo aplica Ruby on rails MVC? Modelo Representan tablas de la base de datos Las clases del Modelo son gestionadas por ActiveRecord Extender de ActiveRecord::Base El programa averiguará automáticamente qué tabla usar y qué columnas tiene. ACTIVE RECORD interfaz para la manipulación de objetos dentro de bases de datos para Rails que funciona, también, en torno a Ruby

47 Modelo- Active Record - ORM

48 Generar un modelo rails generate model ( campos y tipos de campos) rails generate model User nombre:string email: string ¿Cómo se genera un modelo con el generador? Eliminar generate: rails destroy model User

49 ¿Qué es el Active Record? Permite hacer mapeo objeto- relacional (ORM) en Ruby. Mapea una fila de una tabla de la base de datos a un objeto en ruby. Se usa para consultar datos en la base de datos en lugar de usar directamente sql. Por estándar los nombres quedan en minúsculsa

50 ¿Cómo se ve la clase del modelo y la clase de la migración? http://www.youtube.com/watch?v=3ixyMaCRFUY&index=3&list= PLQCgNGUqLK4l4vHyqkOenCxSPHNp6RGUq

51 Una migración es un concepto de ActiveRecord que permite mantener las modificaciones al esquema de su base de datos sincronizadas con la versión actual del código fuente. Cuando está ok, se ejecuta el comando rake db:migrate Para deshacerlo se ejecuta rake db:reset //Limpia las tablas rake db:drop //Elimina la bd ¿Qué es una migración?

52

53 Convenciones de nombre Llaves foráneas: singularized_table_name_id item_id Llave primaria: id

54 Ejecutar: rake db:migrate Correr migraciones

55 MODELO. Operaciones sobre el modelo. Consultar http://guides.rubyonrails.org/active_record_basics.html

56 MODELO. Operaciones sobre el modelo. Crear

57 MODELO. Operaciones sobre el modelo. Actualizar

58 MODELO. Operaciones sobre el modelo. Borrar

59 Una asociación e una conexión entre dos modelos del Active Record. Se usan ciertas palabras claves para demostrar esas asociaciones. Rails construye la relación entre las llaves ( primaria y foránea) según el tipo de asociación Asociaciones en Rails

60 belongs_to Conexión uno a uno con otro modelo. Cada instancia del modelo pertenece a una instancia del otro modelo Debe usarse el nombre de la clase en singular dentro del belong_to ¿Qué tipos de asociaciones existen?

61 has_one Conexión uno a uno con otro modelo. Cada instancia de un modelo contiene o pose una instancia de otro modelo ¿Qué tipos de asociaciones existen?

62 has_many One o mas conexiones con otro modelo. Es común encontrarla al otro lado de una relación belongs_to. Cada instancia del modelo tienen una o más instancias del otro modelo. El nombre del otro modelo debe estar en plural ¿Qué tipos de asociaciones existen?

63 Controlador en ruby on rails

64 MVC en Ruby on rails Controlador Responden a la interacción del usuario e invocan a la lógica de la aplicación Las clases del controlador son gestionadas por el Application Controller y deben heredar de él Acciones son métodos Se invoca desde la web con este patrón: URL : http://aplicacion/ejemplo/me todo Controlador : EjemploController#método Vista con plantilla : /app/views/ejemplo/método. html.erb URL : http://aplicacion/ejemplo/me todo Controlador : EjemploController#método Vista con plantilla : /app/views/ejemplo/método. html.erb

65 ¿Cómo se ve el controlador por dentro? Aquí se pondrán los métodos relacionados con realizar las operaciones de CRUD. Hay métodos públicos, privados y protegidos

66 Vista en ruby on rails

67 MVC en Ruby on rails Vista Cómo se muestran los datos de las clases del Controlador Tiene fragmentos html con código ruby empotrado similar a JSP Es necesario escribir un pequeño fragmento de código en HTML para cada método del controlador que necesita mostrar información al usuario

68 Extensiones de la vista.erb ( Ruby embebido) Actualiza la vista que es HTML.builder Actualiza la vista que es un template xml.coffee Actualiza la vista que es un template javascript

69 Las rutas amigables y la vista Fuente: http://guides.rubyonrails.org/routing.html Opciones para enlaces

70 Ejecutar el comando rake routes Resultado

71 Validaciones

72 Ejemplos validaciones Active Record Incorporar validaciones a los modelos desarrollados

73 Scaffolding

74 ¿Qué es ? Scaffold significa andamio en inglés. Estos comandos permiten tener rapidamente un CRUD (Create, Retrieve, Update, Delete) de cualquier sistema transaccional. rails g scaffold Subject name:string teacherName:string rails destroy scaffold Subject Deshacer scaffold

75 ¿Cómo se ve? Falta hacer la migración de la base de datos

76 ¿Cómo se ve?

77

78 Tipos de datos Scaffold string text (long text, up to 64k, often used for text areas) datetime date integer binary boolean float decimal (for financial data) time timestamp

79 Ejercicio crear con Scaffold el siguiente modelo Appointment Donde cada cita debe tener los siguientes campos: UserName Pwd Email isStudent(boolean) Date of birthday AppointmentTime(timespan) AdditionalInformation (text) rails g scaffold Appointment….

80 Son etiquetas o nombres en ruby. Estan precedidos por pos puntos ( : ) ¿Qué son los símbolos en ruby? Una vez que se ha definido un símbolo con un nombre en la aplicación no puede existir otro símbolo con ese mismo nombre.

81 ¿Cómo poner cascadas?

82 Eliminar un post que tenga comentarios ¿Cómo saber si funciona?

83 ¿Qué son los filtros de los controladores? Permiten ejecutar código compartido antes o después de pre o post procesar código sobre esos métodos. Facilitan la reutilización.

84 Ejemplo- filtro post Vista show.html.erb. Usa la variable de instancia @post

85 Pasa valores de un request a otro. Los controladores los usan para enviar mensajes que son mostrados la usuario en la siguiente solicitud. ¿Para qué sirve el hash flash?

86 Ejemplo uso flash

87 Existen métodos en rails que ayudan a conocer la URL de un recurso. app.modelo_url app.post_url #=>http://localhost:3000/posts app.modelo_url (modeloEspecifico) app.post_url(@post) #=>http://localhost:3000/post/id Equivalente al id de @post Helpers para conocer URLs

88 Routes.rb

89 Las rutas representan la relación que existe entre funciones (mostrar, agregar, eliminar, etc.) de la app y un verbo HTTP (GET, POST, PUT, etc.). En rails las rutas se representan en el archivo routes.rb ¿Qué son las rutas?

90 El elemento "root" dentro del archivo routes.rb representa la ruta base para la aplicación o también puede representar la ruta base para un namespace. Ruta root

91 Para declarar una ruta individual se debe considerar lo siguiente: Conocer el verbo HTTP asociado a la ruta Identificar el controlador y el método que se relacionará con la ruta Rutas individuales

92 Son una colección predefinida de todas las posibles funciones que por defecto posee un controlador Resources

93 Son recursos que dependen uno del otro. Por lo general se utilizan cuando se emplea una tabla de uno a muchos. Ejm: un post tiene muchos comments Nested resources Ojo: Cuando se hacen cambios en el archivo de routes se debe reiniciar el servidor

94 ¿Cómo anidar rutas? – archivo routes Ojo: Cuando se hacen cambios en este archivo se debe reiniciar el servidor

95 ¿Cómo se ven las rutas anidadas?

96 Al aplicarlo a nuestra app. Problema : muestra todos los comments sin importar los post

97 Incluir en la vista show de post la información de los comentarios Incluir la lógica en el controlador en el método show para tener los comentarios

98 ¿Cómo se ve?

99 Show de Post

100 Adicionar en la vista show de post el formulario para agregar un comentario

101 HELPERS

102 En general, su objetivo es mantener el código lo mas DRY posible encapsulando código repetitivo que se ejecuta en tus vistas y entregando operaciones comunes de una manera fácil al desarrollador ¿Qué son?

103 ¿Qué helpers existen? Buscar en: http://api.rubyonrails.org/classes/ActionView/Helpers/For mTagHelper.html

104 app.modelo_path app.post_path #=>/posts app.edit_modelo_path app.edit_post_path #=>post/1 con petición GET Helpers para conocer URLs

105 ¿Para qué sirve el hash Param? Sirve para acceder a los parámetros enviados en una solicitud GET ( por URL) o en una solicitud POST desde el controlador.

106 Permiten desde una página web solicitar otra. En rails se puede hacer desde el controlador usando el método redirect_to ¿Cómo se manejan re direcciones?

107

108

109 ¿Qué pasa cuándo se guarda un comentario? Se requiere el post_id y se muestra el error de validación en la vista new de comments.

110 ¿Cómo se debe ver?

111 Mejorar create del controlador comments para obtener el id del post

112 Bajar y volver al servidor Se elimina esta ruta pq ya se anidaron los comentarios en el post Eliminar la ruta directa de comments

113 Adicionar autenticación No todos los usuarios deberían agregar post o comments

114 Adicionar filtro de autenticación Incluir la autenticación en la sección de métodos privados del controlador. Usar método authenticate_or_request_with_http_basic Incluir la autenticación en la sección de métodos privados del controlador. Usar método authenticate_or_request_with_http_basic

115 ¿Cuál es el resultado de la autenticación?

116 https://www.ruby-lang.org/en/documentation/success-stories/ http://rubyonrails.org Problemas rails: http://railsapps.github.io/openssl-certificate-verify-failed.htmlhttp://railsapps.github.io/openssl-certificate-verify-failed.html Instalar sqllite http://www.tutorialspoint.com/sqlite/sqlite_installation.htmhttp://www.tutorialspoint.com/sqlite/sqlite_installation.htm Instalar rails en ubuntu: http://railsapps.github.io/installrubyonrails-ubuntu.htmlhttp://railsapps.github.io/installrubyonrails-ubuntu.html Otros tutoriales rails: http://railsapps.github.iohttp://railsapps.github.io http://www.benkirane.ch/installing-ruby-on-rails-ubuntu/ Explicaciones sobre redirect – render: https://gist.github.com/jcasimir/1210155 Api REST en Rails: https://www.airpair.com/ruby-on-rails/posts/building-a-restful-api-in-a-rails-application Instalación de Heroku y rails https://www.codecademy.com/articles/deploy-rails-to-heroku Tutorial interactivo: http://www.codelearn.org/ruby-on-rails-tutorialhttp://www.codelearn.org/ruby-on-rails-tutorial Guia adicion bootstrap en ruby on rails http://www.gotealeaf.com/blog/integrating-rails-and-bootstrap-part-1 Referencias


Descargar ppt "Desarrollo y servicios web Luisa Fernanda Rincón Pérez 2016-1."

Presentaciones similares


Anuncios Google