<RubyGems + Bundler
Per molti, CocoaPods è la prima introduzione alla gestione delle dipendenze nei progetti di programmazione. Molte idee per CocoaPods provenivano da progetti simili ( ad esempio RubyGems, Bundler, npm e Gradle).
Comprendere la gestione delle dipendenze di Ruby è utile perché consente di specificare versioni di CocoaPods o altre gemme e garantire che tutti gli sviluppatori del team abbiano la stessa identica versione. Questa guida è per le persone che cercano di garantire la coerenza nelle loro teamdependencies o per l’utilizzo di versioni non rilasciate di CocoaPods.
< RubyGems
RubyGems è un servizio di libreria ruby ospitato. Centralizza dove si cerca una libreria e si installano librerie / app ruby.Avrai visto gem install xxx
. Questi sono installati in un database centrale di versioni. Se immagini che CocoaPodsinstalla tutte le librerie / framework in una cartella di sistema e sono collegati in fase di runtime, allora hai l’idea approssimativa di come RubyGems mantiene tutte le gemme.
Lo svantaggio di questo è che non c’è modo di garantire che un progetto che necessita di una versione specifica di una libreria possa usarlo,userebbe sempre la versione più recente. Quindi, come sviluppatore, saresti cauto nell’installare una nuova versione di un librarybecause sarebbe usato in ogni libreria / app. Questo è il problema bundler risolve.
< Bundler
Bundler crea un ambiente applicativo coerente per l’applicazione, consentendo di specificare la versione delle librerie.Abbiamo preso questa idea quasi intero-vendita per CocoaPods. Si definisce un Gemfile che dice quali librerie si desidera includere e si può eventualmente specificare una versione o un intervallo. Si esegue bundle install
e genererà un Gemfile.blocca dicendo la versione esatta di tutte le tue librerie e poi chiunque altro esegua bundle install
con quel progetto ottiene le stesse identiche versioni.
< Che cos’è un Gemfile?
Se hai letto la guida sul Podfile, ti sembrerà molto simile. Un Gemfile è un file ruby che definisce le tue rubydependencies. Ecco uno esistente da un progetto Cocoa.