2009-01-13 12 views
6

Normalmente creo un complemento cuando tengo un módulo que sé que voy a necesitar de nuevo en mis otros proyectos, sin embargo, también pueden empaquetarse como gemas.¿Crees un complemento o una gema?

¿Cuándo debería estar construyendo una joya antes que crear un complemento? ¿Hay algún criterio para hacer la llamada?

Respuesta

9

Los complementos se están volviendo obsoletos ahora que puede administrar gemas a través de la declaración "config.gem" 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 todas mis plugins a gemas recientemente. Easy to do y bien vale la pena.

+0

"Fácil de hacer" enlace cambiado a http://mbleigh.com/2008/06/11/gemplugins-a- breve-introducción-al-futuro-de-rails-plugins.html – cpm

1

Rails parece estar moviéndose hacia la dirección de la gema. He convertido la mayoría de mis complementos a gemas ahora. Las gemas son más fáciles de administrar y se adaptan mejor en el ecosistema de Ruby. ¿Por qué necesitamos dos sistemas separados de todos modos?

Sin embargo, todavía hay un problema con gemas: no es posible agregar tareas de rake a una aplicación de Rails desde una gema. Probablemente lo mismo se aplica a los generadores, aunque no estoy seguro. Si los usa en su complemento, aún no es posible migrar a una gema. Espero que esto se solucione pronto.

1

puede agregar generadores a los rieles mediante gemas. en realidad es bastante fácil, puedes agregar un directorio rails_generators a tu joya. (Creo que otros nombres de directorio funcionarán; no estoy seguro de qué tipo de raíles busca). ejemplo: http://github.com/remi/rackbox/tree/a21c21667c68d5fd51357e28f0742171e9161e9b/rails_generators

que para añadir tareas rastrillo ... todavía tengo que averiguar howto hacer eso:/

por ahora, estoy teniendo mis generadores añaden require 'myproject/rails/tasks' (o algo así) a Rakefile del proyecto como una forma de agregar tareas de rastrillo a los rieles de una gema.

muchas gemas le piden que las "arranque" en su proyecto de rieles, p. Ej. sudo gem install pepino cd rails_app ./script/generate pepino # arranque de pepino en su aplicación

Cuestiones relacionadas