2013-03-26 17 views
10

Oggi mi sono imbattuto in una situazione in cui una gemma in uso in un'app che sto mantenendo è stata strappata.Perché ci sono così tante gemme strappate e che cosa fai delle dipendenze?

Non avevo mai visto una gemma stracciata, sebbene ne avessi sentito parlare, e ho pensato che fosse una cattiva pratica.

Ho provato ad aggiornare le gem, ma l'app inizia a fallire quando si usano versioni precedenti o precedenti.

Visto che le gemme sono liberamente ospitate e probabilmente utilizzate dalle applicazioni, qual è la logica per tirarle? Come gestisci le gemme strappate?

risposta

9

Per ogni gemma che decidi di utilizzare sul tuo progetto dovresti avere un'ideia di un'alternativa (un'altra gemma o un'implementazione tua). Vedo persone che usano la gemma compulsivamente senza preoccuparsi della sua qualità, autore, frequenza di aggiornamento. È pericoloso essere ciecamente dipendenti da una gemma e la decisione di aggiungere un'altra linea al Gemfile non dovrebbe essere presa alla leggera.

Per quanto riguarda le gemme strappate, se anche gli autori rimuovono le gemme dall'interwebz probabilmente dovresti pensare di fare lo stesso con esso sul tuo progetto. Questo o se ami davvero la gemma, ospitali con una forchetta, dai crediti e continui ad evolversi. :)

+5

+ 1 per "ospitare una forcella" –

4

Rubygem's doc suggerisce che yanking è qui per:

  • fissare spinte accidentali di versioni incomplete
  • impedire agli utenti di cluelessly tirando una gemma che ha conosciuto problemi di sicurezza

non ho mai avuto per gestire un caso del genere, ma vedo tre opzioni:

  • Aggiorna la gemma se esiste una versione successiva
  • scarica la gemma (il documento dice che la gemma è ancora disponibile per il download, a meno che non sia stata completamente rimossa dopo un processo di discussione per buoni motivi) e indichi la versione locale nel tuo gemfile
  • refactoring del codice in giro un altro gioiello o codice personalizzato

tutto sommato, sembra che tirando una gemma è una misura estrema sempre fatto per buone ragioni, quindi si dovrebbe preferire l'aggiornamento/refactoring sopra attaccare con un potenzialmente pericolosa o gemma deprecata ... credo.

Problemi correlati