Rails te protege

Lo que he visto desde mi experiencia es que cuando programamos el aspecto de seguridad se descuida bastante. Tal vez no sea adrede sino por circunstancias que se nos escapan como falta de conocimiento, falta de revisión de código o apuros del día a día.

Justo por eso es ventajoso usar frameworks en lugar de hacer mezclas de distintas librerías. Idealmente, un framework de desarrollo brinda características de diferente tipo para gestionar diferentes partes de una aplicación web. El aspecto de seguridad hace parte de esas características. Y por eso es bueno usar Ruby on Rails.

En el apartado de seguridad de las guías de Rails tenemos una completa lista y descripción de las cosas que tenemos a nuestro favor para hacer una web segura: gestión de sesiones, protección contra CSRF, resguardos contra XSS o ataques de inyección, e incluso un lenguaje específico de dominio (DSL) para CSP (Content Security Policy).

A continuación, trataré de explicar algunos aspectos de esta oferta.

Continuar leyendo «Rails te protege»

¿Cuál es la diferencia entre mock y stub en testing de Rails?

Escribir pruebas automatizadas es bueno para el software que creamos. Es una forma de dar garantía de que lo que hacemos funciona cómo debería en la mayoría de escenarios normales.

De todos modos, no es fácil acostumbrarse a testear cuando no se enseña desde que se aprende a programar.

Una de las cosas buenas de Ruby on Rails es que la ponen fácil para uno meterse al mundo del testing. Tiene su propio framework de pruebas llamado Minitest y permite integrar con pocos pasos otra librería llamada RSpec.

Continuar leyendo «¿Cuál es la diferencia entre mock y stub en testing de Rails?»

Apuntes sobre crear una plantilla de aplicación Ruby on Rails

Crear aplicaciones web con Ruby on Rails es un disfrute total. Este framework nos brinda muchas características para ser productivos muy rápidamente y enfocarse en hacer software y no tanto en configuraciones o resolver problemas con soluciones ya dadas.

Rails ofrece tantas cosas que uno no termina de enterarse de todo. Así me pasó cuando descubrí que existen plantillas para Ruby on Rails. Similar a una plantilla para WordPress, la cual trae diseño visual y complementos, una plantilla para Rails puede ofrecer un gran número de características extra o configuraciones adicionales para empezar aún con más ventaja un proyecto nuevo.

Son una especie de bonus track que el framework permite. A continuación las menciono un poco, explico al respecto y comparto algunas cosas que descubrí al crear la propia para Dev As Pros.

Continuar leyendo «Apuntes sobre crear una plantilla de aplicación Ruby on Rails»

Cómo configurar llave primaria como UUID en Rails

No hay nada de malo en la forma estándar de tener un entero como valor para las llaves primarias en las tablas de nuestras aplicaciones. Sin embargo, por seguridad cuando los registros suelen ser públicos, lo mejor es poner dichas llave como un campo UUID. A continuación muestro como.

Continuar leyendo «Cómo configurar llave primaria como UUID en Rails»

Cómo escribir rake tasks con argumentos

En proyectos Ruby o Rails, cuando queremos ejecutar tareas en el entorno (no en el software como tal) nos valemos de las rake task. Comandos que permiten recrear archivos, insertar o limpiar archivos y datos.

Ahora, cuando creamos nuestras rake tasks personalizadas es muy usual que sean bastante sencillas y triviales pero qué pasa cuándo necesitan un poco más de personalización, cuándo necesitamos pasar argumentos a estas, ¿es posible hacerlo? Claro que sí.

Continuar leyendo «Cómo escribir rake tasks con argumentos»

Cómo Configurar GitHub Actions para correr RSpec

No hay ninguna duda que la integración continua tiene enormes ventajas a la hora de simplificar la forma de enviar nuestros proyectos a los entornos en la nube. Por eso, ya antes he configurado este tipo de servidores en Bitbucket, Jenkins e incluso Circle CI.

Ahora, me tocó hacerlo en GitHub Actions y quiero compartir cómo lo logré y algunos aprendizajes.

Continuar leyendo «Cómo Configurar GitHub Actions para correr RSpec»

Notas de una Migración a Rails 6

Ruby on Rails es un maravilloso framework para el desarrollo de aplicaciones web. Tiene un montón de herramientas para facilitar la vida del desarrollador, además de una serie de valores los cuales dan peso a su existencia.

Cuando empecé a escribir código en Rails era el año 2012 y lo poquito que escribía era en Rails 3. Hice cosas en Rails 4 para saber las diferencias y tuve la oportunidad de seguir escribiendo en la cuarta versión en un software en el que trabajé por casi 2 años. Más adelante, pude empezar un proyecto con Rails 5 y esa fue la constante por un largo rato.

Continuar leyendo «Notas de una Migración a Rails 6»

Cómo Reiniciar Base de Datos PostgreSQL en Heroku

Cuando se trabaja en aplicaciones Ruby on Rails es muy frecuente ir agregando campos a las tablas o nuevas tablas cada tanto tiempo en las etapas iniciales de los proyectos.

A medida que se llega a un punto estable o con muchas características implementadas, se reduce la cantidad de migraciones a generar.

También ocurre que al estar en etapas tempranas nos sentimos con mayor libertad de destruir la base de datos para facilitar el añadir nuevos campos o porque hay mucha información inservible que complica correr migraciones nuevas.

SEGUIR LEYENDO

Popurrí de Jenkins

Cuando empecé mi carrera como desarrollador web ya en el mundo real, sabía muy poco sobre todo lo que el proceso de crear software conlleva. Todo era nuevo. Lo único que sabía era HTML, CSS, algo de JavaScript y algo de PHP.

En esos primeros años aprendí demasiado. Conocí Git, Rails, RSpec, Capistrano, Bash, Drupal, Linode, etc, etc. Si bien descubrí nuevas herramientas y tecnologías, me faltaban procesos.

Continuar leyendo «Popurrí de Jenkins»