Ayer estaba trabajando en un proyecto API de Rails 5 que está utilizando la biblioteca act-as-taggable-on para permitir que las cosas tengan etiquetas (como preguntas en SE). Rails 5 está en soporte alfa en este momento. Actualmente hay un RP para corregir un error que espera fusionarse en maestro; el error causó que mi rama de características se detuviera a la mitad de la finalización: no pude implementar ninguna de las funciones de la biblioteca porque la carga se interrumpió.
Como solución rápida, simplemente cloné el repositorio, arreglé el problema con el mismo código que tenía el RP y apunté mi Gemfile (archivo de control de versión de dependencia) a mi propia bifurcación de Github, hasta que la corrección de errores finalmente se fusionó nuevamente en el maestro.
Tuve suerte de que la solución fuera simple ( y de que alguien ya lo hubiera hecho ), así que pude solucionar el problema. Pero, ¿y si esta biblioteca fuera crítica para el desarrollo de mi aplicación? ¿Qué pasa si la corrección de errores que estaba deteniendo mi desarrollo no era un problema generalizado para otras personas , por lo que la solución no se produjo rápidamente como lo hizo esta vez?
Imagine que esta característica necesita ser completada antes del desarrollo en otras características dependientes . ¿Qué hace en esa situación? ¿Qué pasaría si, para mí, el etiquetado fuera absolutamente crítico para la siguiente frase de desarrollo, donde todo lo demás dependía de él, pero la dependencia del etiquetado está defectuosa para mi configuración? ¿Qué hace uno cuando la funcionalidad crítica de una dependencia impide el desarrollo de (a) características?
Y, seguramente, las peleas de espadas en sillas de oficina durante horas o días no son una opción ...
fuente
La solución para desarrollar aplicaciones donde los errores o la falta de características tienen un alto riesgo de detener su trabajo es no usar bibliotecas de alto riesgo. Aburrido y cojo, lo sé ...
Dijiste que esta es una versión alfa. No use versiones alfa para proyectos críticos. Ni siquiera es una versión beta, y mucho menos 1.0, por lo que es de esperar este tipo de cosas. El objetivo de esta etapa de un proyecto es encontrar problemas y fortalecer el proyecto.
Si te encuentras en esta situación, básicamente tienes que hacer lo que hiciste (hemos hecho exactamente lo mismo). Arreglarlo y PR el proyecto.
Pero la solución está utilizando bibliotecas más estables con funcionalidades y API entendidas o al menos manteniendo la compatibilidad con versiones anteriores. Debe tener cuidado al depender al 100% de algo sobre lo que no tiene control y que necesita para tener éxito.
fuente
Por lo general, se recomienda ocultar bibliotecas de terceros detrás de adaptadores o envoltorios que usted mismo escriba. Esto tiene dos ventajas:
fuente