2010-01-15 8 views
17

Como desarrollador de Rails, me siento un poco estúpido al hacer esta pregunta, pero espero aprender algo nuevo y ¡alguien puede sacarme de mi miseria! En mis aplicaciones de rieles utilizo gemas (de otras personas) todo el tiempo, también uso complementos de la comunidad o los míos.Creando una gema de rubí para aplicaciones de Rails

Entiendo los beneficios del uso de gemas en complementos, ya que son versátiles, segmentados, de todo el sistema, más fáciles de administrar y compartir, etc., pero realmente no sé cómo hacer una joya para mis aplicaciones de rieles !

Siempre empiezas con un plugin y lo conviertes en una gema, he visto las palabras 'paquete como gema'. Además, la gema que estoy pensando en construir no sería buena en un programa ruby ​​normal, solo es útil para rails aplicaciones. Ni siquiera estoy seguro de si la semántica de eso tiene sentido, 'RubyGem' que solo funcionará en una aplicación de rieles !?

Me gustaría crear una joya (si eso es lo que debo usar?) Para una pieza discreta de funcionalidad para mis aplicaciones de rieles. Tendrá que agregar una migración de base de datos, nuevas rutas y proporcionar controladores y vistas, o útiles ayudantes de visualización. Sé que puedo lograr esto a través de un complemento, pero me gustaría saber cómo y por qué hacerlo como una "gema de rubí".

Respuesta

7

Para evitar el riesgo de exceso de ingeniería, generalmente empiezo con la función que necesito directamente en la aplicación. Luego, tan pronto como necesite usar la misma característica en otro proyecto, verifico si vale la pena extraerlo en un complemento o incluso en una aplicación separada que proporcione una API.

Los complementos y las gemas son a menudo intercambiables. Gems proporciona varias ventajas significativas en términos de reutilización y mantenimiento. Por otro lado, hay algún problema conocido específico. Por ejemplo, una aplicación de Rails no puede cargar tareas de rake definidas en un plugin empaquetado como Gem.

Casi todos los plugins de Rails se pueden empaquetar como gemas. Por ejemplo, toma mi tabs_on_rails plugin.

Puede instalarlo como una Gema especificando la dependencia de environment.rb. O puede usar el comando script/plugin install como es de esperar.

Si desea obtener el mismo resultado, asegúrese de seguir el diseño estándar de Gem y proporcionar el script de inicialización init.rb requerido por Rails. Además, es posible que desee crear un archivo install.rb y uninstall.rb para incluir los ganchos posteriores a la instalación y posteriores a la desinstalación cuando el complemento esté instalado como un complemento Rails estándar.

Por último pero no menos importante, si empaqueta un complemento como Gem, puede reutilizarlo en proyectos que no sean de Rails y proporcionar las inicializaciones específicas de Rails utilizando el archivo init.rb. Las aplicaciones que no sean Rails simplemente lo ignorarán.

+0

se puede arreglar la URL a su tabs_on_rails plugin? –

+0

¡Reparado! Gracias. –

+0

@SimoneCarletti - "La aplicación Rails en realidad no puede cargar tareas de rake definidas en un complemento empaquetado como una gema" - No creo que esto todavía sea cierto ... – Yarin

2

Eche un vistazo a Jeweler. Joyero te ofrece una serie de tareas de rastrillo para hacer que las versiones de las gemas sean muy fáciles de construir.

Cuestiones relacionadas