Gem függőségek kezelése: Bundler

A korábbi cikkben láthattuk, hogy egy projektet érdemes internetről beszerezhető GEM-ekre támaszkodva megírni. Azonban minden GEM-nek rengeteg verziója van, és ahogy növekszik a verziószám, úgy egyre több funkcionalitást adnak. Ez önmagában nem gond, a problémát az jelenti, amikor nagyobb változtatásokon esnek keresztül a GEM-ek, és ezáltal már nem lesznek a régebbi verziókkal kompatibilisek.

Érdemes tehát a GEM-eket verziószámmal együtt nyílván tartani egy adott projekthez. Ezt oldja meg a Bundler, sőt még munkát is levesz a válladról.

Ez a cikk nem ad teljeskörű tudást a bundler-ről. A későbbiekben kiegészítések várhatóak. Érdemes böngészni a hivatalos dokumentációt.

Tartalom

Szükséges olvasmány

  • Mielőtt továbbhaladnál telepítened kell a Ruby-t!
  • Olvass utána mik azok a GEM-ek!

Kezdeti Lépésektartalom

Egy terminál ablakban a szokásos parancsot kiadva telepítsük a bundler gem-et:

gem install bundler

A projekt mappánkban készítsünk egy fájlt "Gemfile" névvel (kiterjesztés nélkül). Ez a fájl fog szolgálni arra, hogy a projektünk gem függőségeit egy helyen összefoglalja.

A Gemfile-nak igen egyszerű szerkezete van:

  • A # jellel kezdődő sorok megjegyzésnek minősülnek.
  • A legelső sor egy gem forrást jelöl, ez tipikusan egy internetes forrás, de mutathat a te saját helyi, vagy privát hálózati gem kiszolgálódra is.
  • A hátralévő sorokon lehet listázni a gem függőségeket.

Példa:

source 'http://rubygems.org'
gem 'nokogiri'
gem 'rack', '~>1.1'
gem 'rspec', :require => 'spec'
gem 'minitest', :require => false

A "bundle init" parancs végrehajtásával a projekt mappában, a bundler is tud egy üres Gemfile-t generálni.

Gem Definícióktartalom

A Gemfile egy ruby forrásnak minősül, és a bundler egész egyszerűen betölti, majd a kapott adatokkal teszi a dolgát.

Minden egyes gem definíciós sor lényegében egy metódus hívás, melynek legalább 1 paramétert meg kell adni. A további opcionális paraméterek verzió számokat jelölnek. Végül a :require szimbólumhoz rendelhető értéknek speciális szerepe van.

  • Az első paraméter a gem neve.
  • A második, és további paraméterek a szükséges verzió számok és intervallumok. Ennek alapvetően több típusa lehet:
    • Konkrét verzió
      • Példa: '1.0'
    • Korábbi verzió
      • Példa: '< 3.0'
    • Későbbi verzió
      • Példa: '> 1.5'
    • Korábbi vagy egyenlő
      • Példa: '<= 1.0'
    • Későbbi vagy egyenlő
      • Példa: '>= 1.5'
    • Több szabály kombinációja, pl. '> 1.0', '<= 1.5', '> 1.9'
      • Ezen a - nem túl életszerű példán - kizártunk minden 1.0 vagy korábbi verziót, és minden 1.5 és 1.9 közötti verziót.
  • Az :require akkor lehet hasznos, ha egy gem belépési szkriptje másképp lett elnevezve mint a gem maga. Így érhető el, hogy az ilyen gem-ek is automatikusan betöltődjenek. Ha nem szeretnéd, hogy a bundler automatikusan betöltsön egy gem-et: ":require => false"

Az egyenlőség jel és a ~ jel egymás szinonímái a verzió számok megadásakor. Tehát ~> ugyanaz mint >=

A verziószámokat érdemes pesszimistán kijelölni. Nincs garancia arra, hogy a projekted egy másik verzióval is működik. Érdemes sokat tesztelni különböző verziókkal, valamint követni a híreket azzal kapcsolatban milyen változtatásokat terveznek a gem készítői.

Bundle Parancsoktartalom

A most következő parancsokat a projekt mappában lehet terminálban végrehajtani.

Az opcionális kapcsolók a parancs után szerepelhetnek, és több is kombinálható. pl.: "bundle install --quiet --clean --path=C:\gems\"

bundle installtartalom

A Gemfile-ban megadott gem-eket telepíti. Ha nem található megfelelő verzió, akkor hibaüzenet jelenik meg, és a telepítés félbeszakad.

A legfontosabb, opcionálisan átadható kapcsolók:

  • --clean
    • A telepítés után, a nem használt gem-ek eltávolításra kerülnek.
  • --gemfile=<utvonal>
    • Megadható a Gemfile útvonala amivel a bundler dolgozni fog. Ez akkor lehet hasznos, ha mondjuk egy szkript hívja meg a bundlert, de a szkript nem ugyanabban a mappában van, ahol a Gemfile.
  • --jobs=<szam>
    • Maximális párhuzamos letöltések száma. Alapérték: 1
  • --force
    • A gem-ek akkor is letöltésre és telepítésre kerülnek, ha már azok megtalálhatók a számítógépen.
  • --system
    • A gem-ek a rubygems által meghatározott rendszer szintű mappába lesznek telepítve. Tehát, a bundler által a projekt számára telepített gem-ek más projektek is elérhetik, és listázva lesznek a "gem list" által.
  • --path=<utvonal>
    • A gem-ek a megadott mappába lesznek telepítve.
  • --quiet
    • A lehető legkevesebb üzenet lesz megjelenítve a telepítés során. A bundler ilyenkor exit code-al tér vissza, tehát akkor hasznos ha egy szkriptből hívjuk meg így a bundlert.

bundle updatetartalom

Frissíti a gem-eket az elérhető legfrissebb verzióra.

Opcionálisan átadható kapcsolók:

  • --group=<nev>
    • Csak az adott csoportban szereplő gem-ek lesznek frissítve.
  • --source=<nev>
    • A Gemfile-ban definiált forrásról legyenek frissítve a gem-ek.

bundle helptartalom

Segítség megjelenítése az elérhető parancsokhoz.

bundle packagetartalom

Becsomagolja a projekt gem függőségeit a "vendor\cache" mappába.

Ha a függőségek már megtalálhatóak ebben a mappában, akkor a következő "gem install" parancs innen, és nem az internetről fogja telepíteni a gem-eket.

bundle exec [program]tartalom

Futtat egy programot a bundle keretein belül. Elengedhetetlen így futtatni a programodat, ha azt akarod hogy a bundle automatikusan betölthetővé tegye a gem függőségeket (require).

 

Zene

Google keresés

Váltó

Digitális Táregység


Számrendszer

#=

IMDb Keresés

Kód

Karakter

Szín

Szín kódtábla

Webmaster: GoobeMaster
Érvényes XHTML és CSS
Minden jog fenntartva! ® 2010 - 2017
Jogtulajdonos: United Voxels Ltd. (United Kingdom)

Check Google Page Rank

Technikai háttér: