< RubyGems + Bundler
för många är CocoaPods den första introduktionen till beroendehantering i programmeringsprojekt. Många ofideas för CocoaPods kom från liknande projekt ( till exempel RubyGems, Bundler, npm och Gradle).
att förstå Ruby dependency management är användbart eftersom det låter dig ange versioner av CocoaPods eller andra ädelstenar och säkerställa att alla utvecklare i ditt team har exakt samma version. Den här guiden är för personer som vill säkerställa konsekvens i sina teamdependencies eller för att använda un-released versioner av CocoaPods.
< RubyGems
RubyGems är en värd ruby Bibliotekstjänst. Det centraliserar där du letar efter ett bibliotek, och installera ruby bibliotek / appar.Du har sett gem install xxx
. Dessa installeras i en central databas med versioner. Om du föreställer dig att Cocoapodsinstallerar alla bibliotek / ramar i en systemmapp och de är länkade vid körning, så har du den grova ideaof hur RubyGems håller alla pärlor.
nackdelen med detta är att det inte finns något sätt att säkerställa att ett projekt som behöver en specifik version av ett bibliotek kan använda det,det skulle alltid använda den senaste versionen. Så som utvecklare skulle du vara försiktig med att installera en ny version av ett bibliotekeftersom det skulle användas i varje bibliotek / app. Detta är problemet bundler löser.
< Bundler
Bundler skapar en konsekvent applikationsmiljö för din applikation genom att du kan ange versionen av bibliotek.Vi tog den här tanken nästan hel-försäljning för CocoaPods. Du definierar en Gemfil som säger vilka bibliotek du vill inkludera, och canoptionally ange en version eller intervall. Du kör bundle install
och det kommer att generera en Gemfile.lås säger den exakta versionen avalla dina bibliotek och sedan någon annan som kör bundle install
med det projektet får exakt samma versioner.
< Vad är en Gemfile?
om du har läst guiden på Podfilen kommer den att känna sig väldigt lik. En Gemfile är en ruby-fil som definierar dina rubydependencies. Här är en befintlig från ett Kakaoprojekt.