Ontem, eu estava trabalhando em um projeto de API do Rails 5, que está usando a biblioteca age-as-taggable-on para permitir que as coisas tenham tags (como perguntas no SE). O Rails 5 está agora em suporte alfa. Atualmente, existe um PR para corrigir um erro que espera ser mesclado no master; o bug fez com que meu ramo de recursos parasse no meio da conclusão - não consegui implementar nenhuma das funcionalidades da biblioteca porque o carregamento estava interrompido.
Como uma solução rápida, simplesmente clonei o repositório, corrigi o problema com o mesmo código que o PR e apontei meu Gemfile (arquivo de controle de versões de dependências) para o meu próprio fork do Github, até que a correção do bug finalmente seja mesclada novamente no master.
Tive sorte de a correção ser simples ( e de alguém já ter feito isso ), então pude contornar o problema. Mas e se essa biblioteca fosse crítica para o desenvolvimento do meu aplicativo? E se a correção de erro que estava interrompendo meu desenvolvimento não fosse um problema generalizado para outras pessoas , para que a correção não ocorresse rapidamente, como desta vez?
Imagine que esse recurso precisava ser concluído antes do desenvolvimento de outros recursos dependentes - o que você faz nessa situação? E se, para mim, a marcação fosse absolutamente crítica para a próxima frase de desenvolvimento, onde todo o resto dependia dela - mas a dependência da marcação é corrigida para a minha configuração? O que se faz quando a funcionalidade crítica de uma dependência impede o desenvolvimento de (a) recurso (s)?
E, certamente, lutas de espadas em cadeiras de escritório por horas ou dias não é uma opção ...
fonte
A solução para o desenvolvimento de aplicativos em que erros ou falta de recursos têm um alto risco de interromper o trabalho é não usar bibliotecas de alto risco. Chato e coxo, eu sei ..
Você disse que esta é uma versão alfa. Não use liberações alfa para projetos críticos. Não é nem uma versão beta, muito menos a 1.0, então esse tipo de coisa é esperado. O objetivo dessa etapa de um projeto é encontrar problemas e fortalecer o projeto.
Se você se encontra nessa situação, basicamente precisa fazer o que fez (fizemos exatamente a mesma coisa). Corrija e PR o projeto.
Mas a solução está usando bibliotecas mais estáveis, com funcionalidade e APIs compreendidas, ou pelo menos mantendo a compatibilidade com versões anteriores com uma versão estável. Você deve ser cauteloso, dependendo de 100% de algo que não tem controle e precisa para ter sucesso.
fonte
Geralmente, é recomendável ocultar bibliotecas de terceiros atrás de adaptadores ou wrappers que você escreve. Isso tem duas vantagens:
fonte