Una gema es la distribución de programas, módulos o librerías que extienden funcionalidad, casi siempre específica, y que permiten aplicar el concepto: Don’t Repeat Yourself, es decir, «No Tener que Repetirnos». De esta forma es mucho más fácil todo.
Por ejemplo, hay gemas para Rails que se encargan de la autenticación de usuarios como es el caso de Devise, o Carrierwave, y una gema que se encarga de subidas de archivos.
Por lo tanto, para cada acción que se necesite ejecutar, hay una gema asociada seguramente. Asi qué, podríamos pensar que hay gemas que dependen de otras gemas para que funcionen.
Fuente de inspiración: rodrigopuente