homeASCIIcasts

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.
Filtrado de logs con información privada.
Por defecto, Rails almacena información privada en sus logs. Aprenda como filtrarlos.
Layouts y content_for
content_for allows you to change your layouts on a per-template basis.
Todo acerca de los layouts
Todo lo que se necesita saber sobre layouts.
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.
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.
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.
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.
Métodos dinámicos de find_by
Abrevie un find y mejore legibilidad utilizando métodos find_by dinámicos y find_all_by.
Cacheo Con Variables de Instancia
Almacenar el resultado de un comando costoso para los recursos en uno variable de instancia para mejorar la performance.