DESARROLLO WEB CON RAILS

DESARROLLO WEB CON RAILS

RUBY, SAM / THOMAS, DAVE / HEINEMEIER HANSSON,, DAVID

59,50 €
IVA incluido
Editorial:
ANAYA MULTIMEDIA, S.A.
Año de edición:
2009
ISBN:
978-84-415-2644-0
Páginas:
800
Encuadernación:
Otros

Disponibilidad:

  • Calle Doce de OctubreConsulte disponibilidad
  • Calle Valeriano MirandaConsulte disponibilidad

Prefacio



1. Introducción

1.1. Rails es sencillo

1.2. Encontrar la solución

1.3. Convenciones

1.4. Código fuente

1.5. Información importante sobre las versiones Rails





Parte I. Para comenzar



2. Arquitectura de las aplicaciones Rails

2.1. Modelos, vistas y controladores

2.2. Active Record: soporte del modelo Rails

Programación centrada en la base de datos

Mapeo de objetos relacionales

Active Record

2.3. Action pack: el visor y el controlador

Soporte de vista

¡Y el controlador!



3. Instalación de Rails

3.1. La lista de la compra

3.2. Instalación en Windows

3.3. Instalación en Mac OS X

3.4. Instalación en Linux

3.5. Selección de versión Rails

3.6. Entornos de desarrollo

La línea de comandos

Control de versión

Editores

El escritorio

3.7. Rails y las bases de datos

3.8. Mantener la actualización

3.9. Rails y los ISP



4. Recompensa inmediata

4.1. Crear una aplicación nueva

4.2. ¡Hola Rails!

Rails y las solicitudes URL

Nuestra primera acción

Dinamizando

Contenido dinámico

Añadir la hora

La historia hasta el momento

4.3. Vincular páginas

4.4. Lo que acabamos de hacer

Hora de jugar

Limpieza





Parte II. Crear una aplicación



5. La aplicación Depot

5.1. Diseño gradual

5.2. Lo que hace Depot

Casos de uso

Diagramas de flujo

Datos

5.3. Vamos a codificar



6. Tarea A: Mantenimiento del producto

6.1. Iteración A1: ejecutar

Crear una aplicación Rails

Creación de la base de datos

Configurar la aplicación

Probar la configuración

6.2. Crear el modelo de productos y la aplicación de mantenimiento

Ejecutar la aplicación de mantenimiento

6.3. Iteración A2: añadir una columna ausente

6.4. Iteración A3: ¡validación!

6.5. Iteración A4: hacer listas más atractivas

Lo que hemos hecho

Hora de jugar



7. Tarea B: Visualización del catálogo

7.1. Iteración B1: crear un listado de catálogo

7.2. Iteración B2: añadir un diseño de página

7.3. Iteración B3: utilizar un auxiliar para dar formato al precio

7.4. Iteración B4: vincular al carrito

Lo que acabamos de hacer

Hora de jugar



8. Tarea C: Creación del carrito

8.1. Sesiones

Colocar sesiones en la base de datos

Sesiones y buscadores

Carritos y sesiones

8.2. Iteración C1: crear el carrito

8.3. Iteración C2: crear un carrito más inteligente

La moraleja del cuento

8.4. Iteración C3: gestión de errores

¡El flash!

8.5. Iteración C4: terminar el carrito

Lo que hemos hecho

Hora de jugar



9. Tarea D: Añadir un poco de AJAX

9.1. Iteración D1: mover el carrito

Plantillas parciales

Cambiar el flujo

9.2. Iteración D2: crear un carrito AJAX

Resolución de problemas

El cliente nunca está satisfecho

9.3. Iteración D3: destacar los cambios

9.4. Iteración D4: ocultar un carrito vacío

Métodos auxiliares

9.5. Iteración D5: degradar si está deshabilitado Javascript

9.6. Lo que acabamos de hacer

Hora de jugar



10. Tarea E: ¡Cajero!

10.1. Iteración E1: capturar una petición

Relaciones entre modelos

Crear un formulario de captura de petición

Capturar los detalles de la petición

Última modificación AJAX

Lo que acabamos de hacer

Hora de jugar



11. Tarea F: Administración

11.1. Iteración F1: añadir usuarios

Administración de usuarios

11.2. Iteración F2: Inicio de sesión

11.3. Iteración F3: limitar el acceso

11.4. Iteración F4: añadir una barra lateral y más administración

Sale el último administrador

Cerrar la sesión

Lo que hemos hecho

Hora de jugar



12. Tarea G: El último cambio minúsculo

12.1. Generar el suministro de datos XML

Navegación por las tablas

Crear una interfaz REST

Respuesta adecuada

Otra forma de solicitar XML

Generar automáticamente el XML

Suministro Atom

¡Y también JSON!

12.2. Concluyendo

Hora de jugar



13. Tarea I: Internacionalización

13.1. Iteración I1: habilitar la traducción

13.2. Iteración I2: analizar estrategias del contenido

Lo que hemos hecho

Hora de jugar



14. Tarea T: Pruebas

14.1. Pruebas integradas

14.2. Pruebas de unidad de modelos

Una base de datos sólo para las pruebas

Una prueba de unidad real

Fixtures de prueba

Usar datos fixture

Probar el carrito

Soporte de pruebas de unidad

14.3. Pruebas funcionales de los controladores

Administrador

Índice: solamente para administradores

Fixtures dinámicos

Inicio de sesión

Utilidades prácticas de las pruebas funcionales

Métodos de petición HTTP

Afirmaciones

Variables

Métodos auxiliares de pruebas funcionales

Probando el contenido de la respuesta

Selectores

Selectores simples

Selectores encadenados

Pseudoclases

Afirmaciones de respuesta

Anidar afirmaciones de selección

Afirmaciones adicionales

14.4. Pruebas de integración de las aplicaciones

Pruebas de nivel aún superior

Soporte de pruebas de integración

Métodos prácticos de pruebas de integración

14.5. Pruebas de rendimiento

Perfil y evaluación

14.6. Utilizar objetos mock

Stubs frente a mock

Lo que hemos hecho





Parte III. Trabajar con la estructura de Rails



15. Rails en detalle

15.1. ¿Entonces, dónde está Rails?

15.2. Estructura del directorio

app/ y test/

doc/

lib/

Tareas Rake

log/

public/

script/

tmp/

vendor/

Utilizar Edge Rails

15.3. Configuración de Rails

Entornos de ejecución

Configurar las conexiones de la base de datos

Entornos

La ruta de carga

Parámetros de configuración

15.4. Convenciones de nomenclatura

Mayúsculas y minúsculas, subrayados y plurales

Agrupar controladores en módulos

15.5. Registro en Rails

15.6. Pistas de depuración

15.7. ¿Qué es lo siguiente?



16. Active Support

16.1. Ampliaciones disponibles generales

16.2. Enumeraciones y arrays

16.3. Hashes

16.4. Extensiones de cadena

Codificar nuestras normas para dar un estilo propio

16.5. Extensiones a los números

16.6. Extensiones de hora y fecha

16.7. Una extensión a los símbolos Ruby

16.8. with_options

16.9. Soporte Unicode

La aplicación de nombres Unicode



17. Migraciones

17.1. Crear y ejecutar migraciones

Ejecutar migraciones

17.2. Anatomía de una migración

Tipos de columnas

Renombrar columnas

Cambiar columnas

17.3. Administrar tablas

Opciones para crear tablas

Renombrar tablas

Problemas con rename_table

Definición de índices

Claves primarias

Tablas sin clave primaria

17.4. Migraciones de datos

Cargar datos con migraciones

Cargar datos desde los fixtures

Migrar datos con migraciones

17.5. Migraciones avanzadas

Utilizar SQL nativa

Extender las migraciones

Mensajes diseñados y referencias

17.6. Cuando las migraciones van mal

17.7. Manipulación del esquema fuera de las migraciones

17.8. Administrar las migraciones



18. Active Record parte I: Los fundamentos

18.1. Tablas y clases

18.2. Columnas y atributos

Acceder a las filas y atributos

Atributos booleanos

18.3. Claves primarias e id

Claves primarias compuestas

18.4. Conexión a la base de datos

Información del adaptador

Adaptador DB2

Adaptador Firebird

Adaptador Frontbase

Adaptador MySQL

Adaptador Openbase

Adaptador Oracle

Adaptador Postgres

Adaptador SQLite

Adaptador SQL Server

Adaptador Sybase

Conexiones y modelos

18.5. Crear, leer, actualizar y borrar

Crear filas nuevas

Leer las filas existentes

SQL y Active Record

Utilizar cláusulas like

find()

:conditions

:order

:limit

:offset

:joins

:select

:readonly

:from

:group

:lock

Encontrar solamente una fila

Codificar nuestro propio SQL

Obtener las estadísticas de la columna

Cuenta

Buscadores dinámicos

Alcances con nombre y anónimos

Volver a cargar los datos

Actualizar las filas existentes

save, save!, create y create!

Eliminar las filas

18.6. Agregación y datos estructurados

Almacenar datos estructurados

Composición de datos con adiciones

Los objetos compuestos son objetos de valor

18.7. Misceláneo

Identidad de objeto

Utilizar la conexión raw

El caso de la id ausente

Nombres de columnas mágicas

Actualizaciones parciales y bits sucios

Consulta en caché



19. Active Record parte II: Relaciones entre tablas

19.1. Creación de claves externas

19.2. Especificar las relaciones en los modelos

Relaciones una a una

Relaciones una a varias

Relaciones varias a varias

19.3. Declaraciones belongs_to y has_xxx

La declaración belongs_to

La declaración has_one

Opciones de has_one

La declaración has_many

Métodos añadidos por has_many()

La declaración has_and_belongs_to_many

Asociación de colección de devolución de llamadas

Utilizar modelos como tablas de unión

Eliminar duplicados

Ampliar las asociaciones

Compartir ampliaciones de asociación

19.4. Unir varias tablas

Herencias de una sola tabla

Asociaciones polimórficas

19.5. Uniones autoreferenciadas

19.6. Acts as

Acts as list

Acts as tree

19.7. Cuando se guardan las cosas

Grabación y colecciones

19.8. Carga previa de las filas hijo

19.9. Contadores



20. Active Record parte III: Ciclo de vida del objeto

20.1. Validación

Auxiliares de validación

validates_acceptance_of

validates_associated

validates_confirmation_of

validates_each

validates_exclusion_of

validates_format_of

validates_inclusion_of

validates_length_of

validates_numericality_of

validates_presence_of

validates_size_of

validates_uniqueness_of

Validación condicional

Mensajes de error de validación

20.2. Devolución de llamadas

Registros de marcas temporales

Objetos de devolución de llamadas

Observadores

Instanciar los observadores

20.3. Atributos avanzados

Fachada de columnas

Memorización sencilla

20.4. Transacciones

Transacciones integradas

Transacciones de varias bases de datos

Bloqueo optimista



21. Action Controller: Asignación de ruta y las URL

21.1. Los fundamentos

21.2. Solicitudes de ruta

Jugando con las rutas

Definir las rutas con map.connect

Generación de URL

El método url_for

url_for

Rutas con nombre

Nombres de controladores

URL con ruta

21.3. Ruta basada en los recursos

REST: transferencias de estado representacionales

REST y Rails

Añadir nuestras acciones

Recursos anidados

Anidación de ruta superficial

Seleccionar una representación de datos

21.4. Pruebas de ruta



22. Action Controller y Rails

22.1. Métodos de acción

Entorno del controlador

Respuestas al usuario

Presentar las plantillas

Enviar archivos y otros datos

send_data

send_file

Redirección

redirect_to

redirect_to

redirect_to

22.2. Cookies y sesiones

Detección de la cookie

Sesiones Rails

Almacenamiento de la sesión

Comparar las opciones de almacenamiento de sesión

Caducidad de sesión y limpieza

22.3. Flash. Comunicación entre las acciones

22.4. Filtros y verificación

Filtros anteriores y posteriores

Filtros posteriores y respuestas fiables

Filtros durante

Herencias de filtro

Verificación

Aplicación

Pruebas

Acciones

22.5. Memoria caché, primera parte

Qué guardar en el caché

Expirar páginas

Expirar páginas de forma explícita

Seleccionar una estrategia de almacenamiento en caché

Expirar páginas implícitamente

Expiración basada en el tiempo de las páginas en caché

Siendo buenos con la memoria caché del cliente

Expiración de encabezamientos

Soporte de LastModified y ETag

22.6. El problema de las solicitudes GET

Arreglar el problema GET



23. Action View

23.1. Plantillas

Dónde van las plantillas

El entorno de la plantilla

Qué hay dentro de una plantilla

Plantillas constructoras

Plantillas ERb

Escapar valores sustituidos

23.2. Utilizar auxiliares

23.3. Métodos auxiliares para dar formato, vincular y paginar

Auxiliares de formato

Vincular a otras páginas y recursos

Auxiliares de paginado

23.4. Funcionamiento de los formularios

23.5. Formularios que envuelven objetos de modelo

Auxiliares de campos y form_for

Campos de texto

Áreas de texto

Botones de opción

Casillas de verificación

Listas de selección

Listas de selección agrupadas

Campos de fecha y hora

Etiquetas

Auxiliares de campo si utilizar form_for

Varios modelos en un formulario

Control de errores y objetos de modelo

23.6. Constructores de formularios diseñados

23.7. Trabajar con archivos que no son modelos

Antiguo estilo de form_tag

23.8. Cargar archivos en las aplicaciones Rails

23.9. Diseños y componentes

Diseños

Localizar archivos de diseño

Pasar datos a los diseños

Plantillas parciales de página

Parciales y colecciones

Plantillas compartidas

Plantillas con diseños

Parciales y controladores

23.10. Memoria caché, parte dos

Expirar fragmentos de la memoria caché

Opciones de almacenamiento de caché

23.11. Añadir sistemas de plantilla nuevos

Crear plantillas dinámicas



24. La Web, v2.0

24.1. Prototype

El ejemplo de búsqueda

Utilizar auxiliares Prototype

Opciones comunes

Sincronización

Actualizar la página

Filtros JavaScript

Desviación de llamadas

link_to_remote

periodically_call_remote

link_to_function

remote_function

observe_field

observe_form

form_remote_tag y remote_form_for

submit_to_remote

Degradación y estructura del servidor

Degradar a distintas URL

Degradar a la misma URL

24.2. Script.aculo.us

Autocompletado

Opciones auto_complete_field

Elementos arrastrar y soltar y ordenables

Edición local

Efectos visuales

24.3. Plantillas RJS

Editar los datos

Añadir datos

Mostrar/ocultar los datos

Seleccionar elementos

Interacción JavaScript directa

Auxiliares Script.aculo.us

24.4. Conclusión



25. Action Mailer

25.1. Envío de correos electrónicos

Configuración del correo electrónico

Enviar correos

Plantillas de correo

Generar correos electrónicos

Enviar correos en formato HTML

Enviar varios tipos de contenido

Diseños de gestor de correos

Enviar correos adjuntos

25.2. Recibir correos electrónicos

25.3. Pruebas de correo electrónico

Correos de pruebas de unidad

Pruebas funcionales de correo electrónico



26. Active Resources

26.1. Alternativas a Active Resource

XML

JSON

SOAP

XML-RPC

26.2. Vamos a ver el código

26.3. Relaciones y colecciones

26.4. Trabajar con todos los elementos





Parte IV. Seguridad e implementación de su aplicación



27. Seguridad en la aplicación Rails

27.1. Inyección SQL

Protección frente a la inyección SQL

Extraer consultas en métodos de modelo

27.2. Crear registros directamente desde los parámetros del formulario

27.3. No confiar en los parámetros id

27.4. No exponer los métodos de controlador

27.5. Cross-site scripting (CSS/XSS)

Un ataque común

Proteger la aplicación de XSS

27.6. Evitar los ataques de fijación de sesiones

27.7. Cargas de archivos

27.8. No almacenar información sensible sin encriptar

27.9. Utilizar SSL para transmitir la información sensible

27.10. No guardar en caché las páginas autenticadas

27.11. Confirmar que funciona



28. Implementación y producción

28.1. Comenzar pronto

28.2. Cómo funciona un servidor de producción

FastCGI, delegación de solicitudesy Phusion PassengerTM

28.3. Instalación de Passenger

28.4. Implementación sin preocupaciones con Capistrano

Preparación del servidor de implementación

Poniendo bajo control una aplicación

Implementar la aplicación

Enjuagar, lavar y repetir

28.5. Verificación en una aplicación implementada

Examinar los archivos de registro

Usar la consola para mirar la aplicación en activo

28.6. Tareas de la aplicación de producción

Relaciones con los archivos de registro

Limpiar sesiones

Limitar los errores de la aplicación

28.7. Concluyendo la implementación





Parte V. Apéndices



Apéndice A. Introducción a Ruby

A.1. Ruby es un lenguaje orientado a objetos

A.2. Nombres Ruby

A.3. Métodos

A.4. Clases

Privado y protegido

A.5. Módulos

A.6. Array y hash

Los hash y las listas de parámetros

A.7. Estructuras de control

A.8. Expresiones regulares

A.9. Bloques e iteradores

A.10. Excepciones

A.11. Objetos Marshal

A.12. Ruby interactivo

A.13. Estilos de Ruby

A.14. Documentación



Apéndice B. Parámetros de configuración

B.1. Configuración de nivel superior

B.2. Configuración Active Record

Configuración variada de Active Record

B.3. Configuración de Action Controller

B.4. Configuración Action View

B.5. Configuración de Action Mailer

B.6. Configuración de las pruebas



Apéndice C. Código fuente

C.1. Aplicación Depot completa

Configuración y migraciones de la base de datos

Controladores

Modelos

Diseño y vistas

Vistas admin

Vistas de producto

Vistas de la tienda

Vistas de usuario

Quién ha comprado

Auxiliar

Internacionalización

Pruebas de unidad y funcional

Datos de prueba

Pruebas de unidad

Pruebas funcionales

Pruebas de integración

Pruebas de rendimiento

Archivos CSS



Apéndice D. Recursos

D.1. Recursos en la red



Índice alfabético

Ruby on Rails es una estructura Web MVC (Model-View-Controller) completa que le ayudará a crear aplicaciones Web de alta calidad, dedicando mucho menos tiempo del que imagina. Concéntrese en la aplicación, y Rails se ocupará de los detalles. Incluso puede escribir aplicaciones que admiten JavaScript sin tener que redactar una sola línea de código.



Este libro comienza con un recorrido paso a paso por la creación de una aplicación real, para luego profundizar en el análisis de las características integradas de Rails. Por último, ofrece un enfoque en los recursos de Rails y descubre los métodos más prácticos que utilizan actualmente los desarrolladores. Este manual le enseña, entre otros aspectos, a aprender cómo Rails elimina configuraciones tediosas y tareas de administración local, cómo incorporar a sus aplicaciones Ajax, REST, servicios Web y control de correo electrónico, etc.

Artículos relacionados

  • SIEMPRE ON
    CELLAN-JONES, RORY
    Vivimos en una época en la que miles de millones de personas tienen acceso a una tecnología increíblemente potente. La herramienta más extraordinaria que se ha inventado en el último siglo, el smartphone, ha generado cambios radicales en nuestra forma de vivir y trabajar y, a diferencia de tecnologías anteriores, está en manos de casi todo el mundo. Junto con el auge de las red...

    28,95 €

  • CLICKBAIT
    PARMEGIANI, SIMON
    A kaleidoscopic journey through time, space and the many faces of reality. Sewn from Al's looms, this book represents the glory of machine precision and human creativity, producing a narrative both strange and exciting. In these pages, you will find worlds that are eerily strangely familiar, yet delightfully disparate. From the vibrant underwater fashion scene of Brooklyn to th...

    39,95 €

  • MINECRAFT
    AB, MOJANG
    LIBRO OFICIAL DEL VIDEOJUEGO MÁS VENDIDO DE TODOS LOS TIEMPOS MÁS DE 100.000 EJEMPLARES VENDIDOS DE LA SERIE ¿Eres un constructor experto? ¿Buscas inspiración para tu próxima construcción épica? Visita estas 12 construcciones únicas y alucinantes que seguro que despertarán tu imaginación. Aquí aprenderás los mejores trucos y recibirás los mejores consejos, con los que logr...

    20,90 €

  • LA INTELIGENCIA ARTIFICIAL EXPLICADA A LOS HUMANOS
    TORRES, JORDI
    Ante el avance de la IA en cada vez más ámbitos de la vida cotidiana, La inteligencia artificial explicada a los humanos propone al lector un acercamiento a esta revolucionaria tecnología a través de un lenguaje cercano y accesible para todos.Un libro divulgativo, ameno y claro que nos ayuda a comprender cómo funciona la IA y aclara algunos de los interrogantes que se plantean ...

    15,00 €

  • PUBLICACIÓN DE PÁGINAS WEB
    FERNÁNDEZ CASADO, PABLO E.
    Esta obra es una guía práctica y completa diseñada para ayudar a los principiantes a publicar un sitio web de forma que este sea lo más visible, atractivo y accesible posible. Se abordan todos los aspectos esenciales para que los lectores aprendan a lanzar sus propias páginas web de forma segura con los protocolos y herramientas que garanticen la protección ante intentos de hac...

    22,90 €

  • INVENTOS EPICOS
    AB, MOJANG
    ¿Eres un buen inventor?¿Buscas inspiración para tu próximo invento épico?¡Pues no busques más!Explora los ingeniosos edificios de doce constructores legendarios, todos dispuestos a mostrarte sus creaciones más impresionantes; entre ellas, una estación espacial intergaláctica, un santuario de animales, una fábrica de monstruos, un canal kawaii y mucas otras más.Descubre sus mejo...

    19,90 €