> For the complete documentation index, see [llms.txt](https://la-guia.platan.us/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://la-guia.platan.us/stack/ruby_rails/gems.md).

# Gems

Para crear una gema, en vez de usar el generador de `bundler`, podemos utilizar [gemaker](https://github.com/platanus/gemaker) que hace lo mismo pero, además:

* Permite elegir entre dos tipos de gemas: gema de Ruby o engine de Rails.
* Modifica el `README` para adaptarse al estándar de Platanus.
* Agrega en un archivo `CHANGELOG.md` para animarnos a documentar que se hizo en cada versión de la gema.
* Modifica el archivo de licencia nombrando a Platanus en él.
* Agrega la estructura básica para que nuestra gema tenga una CLI.
* Configura el ambiente de test utilizando RSpec.
* Agrega un generador para instalar la gema.
* Configura Circle CI.

```bash
gemaker new my_gem
```

Al correr el comando anterior gemaker, antes de crear la gema, nos hará una serie de preguntas para:

* Dejar listo (o casi listo) archivos como el `README` o el `.gemspec`.
* Que seleccionemos aquella funcionalidad que es opcional y que necesitemos en nuestra gema. Por ej: podríamos no necesitar un CLI o un instalador o querer que nuestra gema sea una extensión de Rails (engine) o no.
