¿Construir un complemento o gema?
-
22-07-2019 - |
Pregunta
Normalmente, creo un complemento cuando tengo un módulo que sé que voy a necesitar nuevamente en mis otros proyectos, sin embargo, también podrían empaquetarse como gemas.
¿Cuándo debería construir una gema sobre la creación de un complemento? ¿Hay algún criterio para hacer la llamada?
Solución
Los complementos se están volviendo obsoletos ahora que puede administrar gemas a través de " config.gem " declaración en environment.rb. Las gemas están disponibles en todo el sistema (no solo en una aplicación) y están versionadas a diferencia de los complementos.
He convertido todos mis complementos a gemas recientemente. Fácil hacer y vale la pena.
Otros consejos
Rails parece moverse hacia la dirección de la gema. He convertido la mayoría de mis complementos en gemas ahora. Las gemas son más fáciles de administrar y encajan mejor en el ecosistema Ruby. ¿Por qué necesitamos dos sistemas separados de todos modos?
Sin embargo, todavía hay un problema con las gemas: no es posible agregar tareas de rastrillo a una aplicación Rails desde una gema. Probablemente lo mismo vale para los generadores, aunque no estoy seguro. Si los usa en su complemento, aún no es posible migrar a una gema. Esperemos que esto se solucione pronto.
puede agregar generadores a los rieles a través de gemas. en realidad es bastante fácil, solo puede agregar un directorio rails_generators a su gema. (Creo que otros nombres de directorio funcionarán, no estoy seguro de qué busca Rails). ejemplo: http://github.com/remi/rackbox/tree/a21c2167eef_e1d9f1e9f1e9f1e9f3e1f3e9f1e9f3e9f3e1f3e1f3e1f3e1f3e1 / a>
en cuanto a agregar tareas de rastrillo ... todavía tengo que descubrir cómo hacer eso: /
por ahora, mis generadores agregan requieren 'myproject / rails / task'
(o algo) al Rakefile del proyecto como una forma de agregar tareas de rake a los rieles desde una gema.
muchas gemas te piden que las "inicies" en tu proyecto de rieles, por ejemplo. sudo gem instalar pepino cd rails_app ./script/generate cucumber # bootstrap pepino en tu aplicación