Si bien las librerías que forman parte del core de Ruby son bastante completas, a menudo se echan en falta métodos para realizar operaciones con los objetos que no han sido tenidas en cuenta, y para las que deberemos bien recurrir a una gem externa, bien pasar a implementarlo nosotros mismos.
Una de las gems más conocidas en lo que a extensión de funcionalidad en las clases principales de Ruby se refiere es ActiveSupport, que nació como un componente más del framework Ruby on Rails, pero que hoy en día es utilizada ampliamente en multitud de gems y proyectos independientes de éste.
Sin embargo, también existe una colección mucho más amplia de extensiones a la librería de Ruby, y que es más desconocida. Su nombre es Ruby Facets, y aunque se trata de una gem bastante grande, no debe preocuparnos incorporarla a nuestro proyecto, pues está perfectamente modularizada, y podemos incluir únicamente las extensiones deseadas a nuestro software en Ruby, sin engordar inútilmente el espacio en memoria que ocupará nuestro proceso. De hecho, se pueden cargar las extensiones incluso método a método, o todas las extensiones disponibles para una clase determinada, con lo que podemos hilar tan fino como deseemos.
Para haceros una idea, en Facets nos encontraremos con métodos para realizar operaciones adicionales con un objeto de la clase Array, tales como hacer merges destructivos, calcular la entropía del mismo, calcular todas las permutaciones posibles de sus elementos, dividirlo en grupos de elementos según una expresión regular, y muchas más.
Dedicad unos minutos a navegar por su extensa documentación. Os garantizo que os encontraréis con muy gratas sorpresas.
Documentación | Facets Core, Facets More
Más información | Ruby Facets