ASCIIcasts
Episode Archive
- 285 Spork
- Spork mejora los tiempos de carga de nuestros tests inicializando la aplicación Rails en segundo plano. Se puede usar con Guard para tener lo último en cuanto a rapidez de respuesta en TDD.
- 284 Active Admin
- Con Active Admin podemos construir rápidamente una interfaz de administración, y no sólo tiene muy buen aspecto sino que además se puede adaptar fácilmente como veremos en este episodio.
- 283 Autenticación usando Sorcery
- Sorcery es una solución de autenticación completa y mudlar que nos deja a nosotros implementar las capas de vista y controlador.
- 282 Actualización a Rails 3.1
- Es muy fácil migrar a Rails 3.1, pero tendremos que hacer un pequeño esfuerzo si queremos aprovechar las ventajas del conducto de estáticos. Pero en este episodio veremos los pasos necesarios para hacerlo.
- 281 Foreman
- Con Foreman podemos gestionar los procesos que nuestra aplicación Rails necesite para funcionar correctamente en desarrollo. También puede exportar la configuración necesaria para ponerla en producción.
- 280 Pry y Rails
- Pry es una alternativa a IRB que tiene muchas funcionalidades interesantes. En este episodio veremos cómo integrarlo con una aplicación Rails y su uso como herramienta de depuración.
- 279 El conducto de estáticos
- El conducto de estáticos es posiblemente la funcionalidad más importante de Rails 3.1, pero al principio puede parecernos mágico. En este episodio invetigaremos mejor su funcionamiento.
- 278 Búsquedas con Sunspot
- Con Sunspot es muy fácil realizar búsquedas de texto completo mediante Solr. En este episodio veremos cómo buscar en varios atributos y añadir facetas para filtrar más las búsquedas.
- 277 Engines montables
- Los Engines han recibido una gran mejora en la versión 3.1 de Rails: ahora pueden montarse en cualquier ruta, incluir sus propios recursos estáticos, ejecutar generadores y mucho más. En este episodio vemos cómo.
- 276 Tests dependientes de la hora y peticiones web externas
- Puede resultarnos difícil escribir tests que manejen la hora actual o una petición web externa. En este episodio veremos cómo escribirlos utilizando las gemas Timecop y FakeWeb.
- 275 Cómo escribo los tests
- Hoy veremos cómo escribir los tests de la funcionalidad de recuperación de contraseña que vimos en el episodio anterior. Utilizaremos RSpec, Capybara, Factory Girl y Guard.
- 274 Récuérdame y recuperación de contraseña
- Es sencillo implementar una autenticación partiendo de cero, pero ¿cómo podemos añadirle más funcionalidades? En este episodio añadimos una casilla para que se inicie la sesión automáticamente para aquellos usuarios que lo deseen y un enlace para la recuperación de contraseña.
- 273 Geocoder
- Geocoder es una gema excelente para manipular datos geográficos. Convierte direcciones en coordenadas, calculando distancias, encontrando lugares cercanos, y más.
- 272 Markdown con Redcarpet
- Redcarpet es una gema muy fácil de usar que interpreta Markdown. En este episodio veremos cómo se configura y añadiremos resaltado sintáctico utilizando Pygments y Albino.
- 271 Resque
- Resque permite gestionar tareas en segundo plano utilizando Redis. Soporta múltiples colas de tareas e incorpora una útil interfaz de administración web para monitorizar y gestionar la colas.
- 270 Autenticación en Rails 3.1
- Hoy veremos tres nuevas funcionalidades de Rails 3.1 que nos ayudan con la autenticación: más sencillez en la autenticación HTTP básica, passwords seguros en la base de datos y forzar el uso de SSL.
- 269 Herencia de plantillas
- En Rails 3.1 la herencia entre controladores también aplica en la capa de vistas. Hoy veremos cómo crear una plantilla de la aplicación compartida por todas las vistas, y cómo modificar la ruta de vistas para redefinir plantillas basándonos en el subdominio de la petición.
- 268 Fundamentos de SASS
- SASS amplía CSS con variables, mix-ins, anidamientos, etc. En este episodio veremos cómo convertir de CSS a SCSS en una aplicación Rails 3.1
- 267 Fundamentos de CoffeeScript
- Con CoffeeScript podemos escribir JavaScript de forma muy concisa y elegante. En este episodio veremos cómo convertir código JavaScript a CoffeeScript en una aplicación Rails 3.1.
- 266 Emisión continua de HTTP
- La emisión continua o streaming de HTTP permite que el navegador empiece a procesar el HTML de la respuesta que le envía la aplicación Rails mientras ésta aún no ha terminado de servir la petición.
- 265 Rails 3.1 de un vistazo
- Este episodio es el primero de una serie dedicada a Rails 3.1, en él veremos cómo instalar la versión beta y algunas de sus nuevas funcionalidades.
- 264 Guard
- Guard vigila un grupo de archivos y ejecuta órdenes cuando detecta la modificación de alguno de ellos. Esto nos puede servir para lanzar tests en segundo plano, reiniciar el servidor de desarrollo, recargar el navegador...
- 263 Validaciones en el lado del cliente
- Podemos conseguir una mejor experiencia de usuario mostrando de forma inmediata los errores de validación al usuario según va rellenando el formulario. En este episodio aprenderemos a usarlo utilizando la gema Client Side Validations.
- 262 Árboles con Ancestry
- La gema Ancestry implementa una estructura de árbol pero también nos permite recuperar elementos con varios niveles de anidamiento con una sola consulta, permitiendo luego organizar los resultados.
- 261 Tests de JavaScript con Jasmine
- ¿Escribes tests de tu código JavaScript? Aprende a añadir especificaciones utilizando Jasmine. En este episodio también veremos la integración de jQuery mediante jasmine-jquery.
- 260 Mensajería asíncrona con Faye
- Faye es un servidor de publicación/suscripción que facilita la implementación de notificaciones asíncronas en una aplicación Rails.
- 259 Decent Exposure
- La gema decent_exposure hace que sea muy cómodo compartir datos entre el controlador y las vistas mediante el uso de métodos en lugar de variables.
- 258 Campos de selección de términos
- Con el plugin jQuery Tokeninput es muy fácil añadir una lista autocompletada de entradas posibles para una asociación de muchos a muchos.
- 257 Especificaciones de petición y Capybara
- Las especificaciones de petición de RSpec nos permiten probar que toda la pila de aplicación funciona correctamente. También veremos como utilizar Capybara con tests integrados de JavaScript usando Selenium.
- 256 Almacenes de i18n
- Con Rails es muy fácil internacionalizar las aplicaciones pero el uso de ficheros YAML puede hacerse difícil de controlar. En este episodio veremos cómo utilizar Redis para gestionar las traducciones con una interfaz web.
- 255 Deshacer con PaperTrail
- El comportamiento de deshacer y reahacer es sencillo de agregar con una gema de versionado como Paper Trail. Aprende como agregar un link a deshacer a los mensajes flash de cualquier modelo.
- 254 Paginación con Kaminari
- Podemos usar Kaminari para implementar paginaciones en Rails 3. Es una solución limpia y flexible que funciona bien con los ámbitos de las consultas de ActiveRecord.
- 253 Subida de archivos con CarrierWave
- Con CarrierWave es muy fácil añadir subida de archivos a nuestras aplicaciones. Soporta diversos procesadores de imágenes, ORMs y frameworks.
- 252 Métricas, métricas, métricas
- En este episodio se repasan Metric Fu, Metrical, SimpleRCov y Rails Best Practices que trata sobre las herramientas de métricas.
- 251 MetaWhere y MetaSearch
- Con MetaWhere podemos hacer búsquedas con condiciones complejas sin utilizar SQL con ActiveRecord, mientras que con MetaSearch nos será más fácil programar formularios de búsqueda con múltiples opciones.
- 250 Autenticación desde cero
- No es difícil implementar una autenticación basada en claves desde cero, y esto nos ayudará a entender mejor cómo funciona.
- 249 Notificaciones en Rails 3
- Rails 3 incorpora soporte de instrumentación mediante la clase ActiveSupport::Notifications. Basta con llamar a "subscribe" para recibir notificaciones, o a "instrument" para enviarlas.
- 248 Aplicaciones sin conexión (y II)
- Aprende a hacer una aplicación disponible sin conexión mediante el localStorage de HTML5. En esta última entrega de la serie estudiamos jquery-tmpl y jquery-offline.
- 247 Aplicaciones sin conexión
- Aprende a hacer una aplicación disponible sin conexión mediante un manifiesto de caché de HTML 5. Esta primera parte trata de rack-offline y algunos problemas que nos podemos encontrar.
- 246 Manipulación del estado de navegación con AJAX
- Con la nueva función pushState de JavaScript podemos manipular la URL con AJAX. Esto quiere decir que podemos guardar marcadores, usar el botón de atrás del navegador y recargar la página sin pérdida de información.
- 245 Una nueva gema con Bundler
- Es muy fácil crear nuestras propias gemas con la orden 'bundle gem', y en este episodio veremos cómo hacerlo.
- 244 Gravatar
- Gravatar es un servicio que proporciona avatares a los usuarios. En este episodio veremos lo fácil que es usarlo con Rails.
- 243 Beanstalk y Stalker
- Beanstalk ofrece una forma rápida y sencilla de crear tareas en segundo plan y con Stalker podemos crear estas tareas con una interfaz cómoda.
- 242 Thor
- Thor es una alternativa a Rake. Mejora el soporte de parámetros por línea de órdenes y proporciona una manera de instalar los scripts globalmente.
- 241 Simplemente OmniAuth
- Con OmniAuth es fácil añadir autenticación si no tenemos que tener un nombre y clave o múltiples autenticaciones por usuario.
- 240 Ordenación, paginación y búsqueda con AJAX
- Muchas páginas de administración tienen búsqueda, paginación y ordenación en sus listados. En este capítulo veremos cómo hacerlo incluyendo AJAX.
- 239 ActiveRecord::Relation paso a paso
- Los nuevos métodos de consulta de ActiveRecord parecen mágicos. En este episodio desvelaremos su funcionamiento viendo el código fuente de Rails.
- 238 Mongoid
- Mongoid es una cuidada gema de alto nivel para acceder a MongoDB. En este episodio cubriremos la instalación, añadir campos, validaciones, asocaciones y claves.
- 237 Asignación masiva dinámica
- Es importante que usemos attr_accessible por motivos de seguridad ante la asignación masiva de atributos, pero ¿y si necesitamos que sea dinámico dependiendo de los permisos del usuario? En este episodio veremos cómo.
- 236 OmniAuth (y II)
- En este episodio continuamos integrando OmniAuth con Devise. Veremos cómo configurar nuevos usuarios y adaptar sus validaciones.
- 235 OmniAuth
- OmniAuth permite añadir fácilmente diferentes servicios de autenticación a nuestras aplicaciones. En este episodio comenzaremos la integración con Devise.
- 234 SimpleForm
- SimpleForm nos proporciona una forma sencilla de generar formularios, que tiene muchas opciones parar configurar el marcado generado.
- 233 Engage y Devise
- Janrain Engage (también conocido como RPX) hace que sea sencillo soportar muchas soluciones de autenticación a través de un único servicio.
- 232 Las rutas, paso a paso (y II)
- En este episodio continuaremos con nuestro repaso de las rutas en Rails 3 explorando la clase Mapper.
- 231 Las rutas, paso a paso
- ¿Cómo funcionan internamente las rutas en Rails 3? En este episodio repasaremos el código de Rails que hace posible su funcionamiento.
- 230 Recursos heredados
- La gema Inherited Resources simplifica los controladores REST proporcionando acciones por defecto que podemos personalizar mediante herencia
- 229 Actualización periódica de cambios
- Si los datos cambian con cierta frecuencia en el lado del servidor sería muy útil mostrárselos al usuario también. Aquí veremos como hacer esto mediante consultas periódicas con jQuery.
- 228 Ordenación de tablas por columnas
- En este episodio veremos cómo hacer una tabla de elementos que se puede ordenar pulsando en las celdas de la cabecera.
- 227 Actualización a Rails 3 (y III)
- Con este episodio concluimos la serie dedicada a Rails 3 eliminando todos los avisos de funcionalidad a extinguir y corrigiendo algunos problemas en las vistas.
- 226 Actualización a Rails 3 (y II)
- Donde se continúa la actualización a Rails 3 de una aplicación ejecutando los tests y utilizando el plugin rails_upgrade.
- 225 Actualización a Rails 3
- En la primera parte de esta serie de episodios dedicados a la migración de aplicaciones de Rails 2 a la versión 3, empezaremos instalado la versión candidata de Rails 3 en un entorno limpio. Con la ayuda del plugin rails_upgrade podremos determinar qué es lo que tenemos que actualizar.
- 224 Controladores en Rails 3
- En este episodio abordaremos los cambios que Rails 3 introduce en los controladores, incluyendo los mensajes flash, las cookies permanentes y respond_with
- 223 Gráficas
- Existen varias librerías para dibujar gráficas. En este episodio usaremos Highchart en una aplicación Rails.
- 222 Rack y Rails 3
- Las rutas de Rails 3 son totalmente compatibles con Rack.En este episodio aprenderemos a integrar Sinatra en nuestra aplicación, gestionar redirecciones y trabajar mejor con Rails Metal.
- 221 Subdominios con Rails 3
- Ya podemos gestionar subdominios en Rails 3 sin tener que utilizar un plugin. En este episodio aprenderemos cómo.
- 220 PDFKit
- La generación de PDFs en Ruby puede ser bastante complicada. En su lugar podemos considerar generar PDFs a partir del HTML con PDFKit.
- 219 Active Model
- En Rails 3 se ha extraido de ActiveRecord la funcionalidad no relacionada con la base de datos y se ha puesto en ActiveModel. Esto nos permite añadir fácilmente validaciones y otras funcionalidades a los modelos sin tablas.
- 218 Cómo escribir nuestros propios generadores en Rails 3
- Ahora en Rails 3 los generadores utilizan la librería Thor, lo que implica que el código utilizado para crear un nuevo generador es bastante diferente. En este episodio veremos esta nueva forma de escribir generadores.
- 217 Fomularios con múltiples pasos
- En este episodio crearemos desde cero un formulario con múltiples pasos, o asistente
- 216 Generadores en Rails 3
- En Rails 3 los generadores son modulares, por lo que podemos personalizar cualquier generador para adaptarlo a nuestras necesidades.
- 215 Consultas avanzadas con Rails 3
- Hoy aprenderemos algunas técnicas avanzadas con los ámbitos de ActiveRecord y también veremos una introducción a Arel.
- 214 Tests A/B con A/Bingo
- Los tests A/B son una forma de experimentar con variantes de una aplicación para ver las más efectivas
- 213 Calendarios
- Si las fechas juegan un papel relevante en nuestra aplicación deberíamos considerar el uso de una vista de calendario y un selector de fechas tal y como veremos en este episodio.
- 212 Refactorizando con el Delegador Dinámico
- Cómo refactorizar un conjunto de consultas condicionales de ActiveRecord utilizando un Delegador Dinámico.
- 211 Las validaciones en Rails 3
- En las validaciones de Rails 3 hay varias novedades. Hoy aprenderemos a escribir nuestros propios parciales para gestión de los mensajes, a averiguar mediante reflexión las validaciones activas para un modelo y a organizar validaciones complejas.
- 210 Personalización de Devise
- En este episodio continuamos repasando Devise y veremos cómo personalizar las vistas, rutas y validaciones.
- 209 Introduccion a Devise
- Devise es una solución completa para añadir autenticación a nuestra aplicación, que incluye toda la lógica de controlador y sus vistas. En este episodio aprenderemos cómo se usa
- 208 Bloques con ERB en Rails 3
- Ya está disponible la beta 2 de Rails 3, que trata los bloques en erb de manera diferente. En este episodio veremos cómo.
- 207 Coloreado sintactico
- En este episodio se tratan tres herramientas populares de coloreado sintáctico: CodeRay, Ultraviolet y Pygments
- 206 Action Mailer en Rails 3
- Action Mailer ha sido reescrito en Rails 3 con una API mucho más limpia gracias a su uso de la gema Mail.
- 205 Javascript no intrusivo
- Rails 3 nos ayuda separar contenido y comportamiento mediante el uso de Javascript no intrusivo.
- 204 Protección contra XSS en Rails 3
- En las versiones anteriores de Rails era fácil que nuestra aplicación fuese vulnerable a ataques de cross-site scripting. En Rails 3 se resuelve este problema mediante el escapado automático de la salida.
- 203 Rutas en Rails 3
- Hay una nueva interfaz de rutas en Rails 3. En este episodio veremos como traducir las rutas antiguas al nuevo formato, y también algunas de las nuevas funcionalidades.
- 202 Consultas ActiveRecord en Rails 3
- Rails 3 introduce una nueva interfaz de consultas para realizar búsquedas en ActiveRecord. Veamos cómo funciona, así como los cambios en los ámbitos.
- 201 Bundler
- Bundler es la nueva manera de gestionar dependencias entre gemas en Rails 3.0 Aprende a instalar gemas y bloquearlas en este episodio.
- 200 Rails 3 Beta y RVM
- Empezaremos con Rails 3.0 y la instalación de Ruby 1.9.1 mediante rvm (Ruby Version Manager) Terminaremos con un reto para devolver los esfuerzos de la comunidad open source.
- 199 Dispositivos móviles
- En este episodio cambiaremos el aspecto y comportamiento de una aplicación Rails para dispositivos móviles y utilizaremos jQTouch para construir una interfaz de aspecto nativo.
- 198 Edición individual múltiple
- En este episodio editaremos varios registros a la vez en un único formulario, pero cada uno con sus propios campos
- 197 Formularios de modelos anidados (y II)
- Cómo eliminar y borrar dinámicamente campos anidados con JavaScript usando Prototype o jQuery
- 196 Formularios de modelos anidados (I)
- El método accepts_nested_attributes_for, introducido en Rails 2.3, hace que manejar múltiples modelos en un formulario sea mucho más fácil. En este episodio veremos cómo.
- 195 Nuestras aplicaciones web favoritas de 2009
- En este episodio veremos algunas de las mejores aplicaciones web de 2009 para desarrolladores Ruby
- 194 MongoDB y MongoMapper
- MongoDB es una base de datos basada en documentos. Aprende cómo usarla en tu aplicación Rails con MongoMapper en este episodio.
- 193 Modelos sin tablas
- Si queremos crear un model sin una tabla asociada en la base de datos todo lo que necesitamos hacer es definir un par de métodos en el modelo
- 192 Autorización con CanCan
- CanCan es un plugin sencillo de autorización que ofrece una gran flexibilidad. En este episodio averiguaremos cómo usarlo
- 191 Mechanize
- Mechanize amplía la funcionalidad de Nokogiri permitiéndonos interactuar con sitios web, rellenar formularios y seguir enlaces.
- 190 Screen scraping con Nokogiri
- Utilizar Nokogiri y SelectorGadget hace que que el screen scraping sea más fácil
- 188 Declarative Authorization
- Declarative authorization provee una solución avanzada y poderosa para la autenticación basada en roles.
- 185 Formtastic: parte 2
- En este episodio cubriremos algunas características más avanzadas de Formtastic, incluyendo el manejo de relaciones many-to-many, campos requeridos y estilos.
- 184 Formtastic Parte 1
- La librería Formtastic provee una manera concisa de generar formularios en las vistas. En la primer parte de esta serie la utilizaremos para generar un formulario simple y uno más complejo y personalizado
- 160 Authlogic
- La autenticación puede llegar a ser muy compleja. En este episodio veremos cómo utilizar Authlogic para gestionar esta complejidad y a la vez controlar la presentación al usuario.
- 21 Sistema simple de autenticación
- La autenticación es el paso final para configurar la administración de nuestro sitio. Hay varias formas de hacerlo, pero vamos a utilizar una solución sencilla.
- 20 ¿Dónde coloco la administración de mi sitio (parte 2)?
- En el episodio anterior, vimos como crear links para las acciones create, edit y destroy del sitio web de ASCIIcasts. Los links funcionaban, pero de una manera bastante permisiva con usuarios públicos.
- 19 ¿Dónde coloco la administración de mi sitio?
- Esta es la primera parte de una serie de tres partes sobre como hacer un sistema de administración para su sitio que no requiera construir un set de páginas completamente separadas.
- 18 Notificaciones flash
- Mostrar notificaciones flash puede ser dificil. Este episodio muestra una forma fácil de mostrar notificaciones flash.
- 17 Checkboxes HABTM
- Cree un listado de checkboxes para administrar fácilmente una relación HABTM.
- 16 Virtual Attributes
- Mantenga sus formularios flexibles agregando atributos virtuales a sus modelos. Esta poderosa técnica le permite crear campos en formularios que no están relacionados de forma directa con la base de datos
- 15 Condiciones del método Find
- Se pueden pasar otros tipos de objetos además de cadenas a las condiciones de un find. Pero hay que tener cuidado de que el código SQL correcto sea generado.
- 14 Realizando operaciones en modelos
- ActiveRecord provee de métodos de clase para realizar operaciones en modelos.
- 13 Peligros del modelo en la sesión
- Cuidados a tener al almacenar un modelo en una sesión ya que puede desincronizarse con respecto a la base de datos.
- 12 Refactoreando el nombre de usuario – Parte 3
- En la ultima parte de los episodios sobre testing y refactoreo, vamos a refactorear nuestro código de testing.
- 11 Refactoreando el nombre de usuario – Parte 2
- Habiendo cambiado el código de la vista al modelo en la primer parte, vamos a refactorearlo y escribiremos algunos tests para asegurarnos que aun funciona como se espera.
- 10 Refactoreando el nombre de usuario
- Este episodio nos mostrara como mover código de la vista al modelo correspondiente para reducir duplicación y limpiar la vista.
- 9 Filtrado de logs con información privada.
- Por defecto, Rails almacena información privada en sus logs. Aprenda como filtrarlos.
- 8 Layouts y content_for
- content_for allows you to change your layouts on a per-template basis.
- 7 Todo acerca de los layouts
- Todo lo que se necesita saber sobre layouts.
- 6 Uso de Symbol to_proc para sustituir un bloque
- La prestación Symbol#to_proc en Rails permite hacer rápida y fácilmente bloques simples.
- 5 Uso de with_scope
- Aprenda como utilizar with_scope - un método muy poderoso que permitirá que sus métodos find predefinidos acepten cualquier opción.
- 4 Mover Find Dentro del Modelo
- Limpiar los controladores y eliminar duplicación, cambiando de lugar el método find dentro de un modelo. Utilice una asociación para llamar métodos find personalizados.
- 3 Find a través de Asociación
- Uso de una asociación has_many en un find para evitar la necesidad de pasar claves foráneas.
- 2 Métodos dinámicos de find_by
- Abrevie un find y mejore legibilidad utilizando métodos find_by dinámicos y find_all_by.
- 1 Cacheo Con Variables de Instancia
- Almacenar el resultado de un comando costoso para los recursos en uno variable de instancia para mejorar la performance.