Olen käyttänyt ruby-jalokiviä jo muutaman viikon ajan, ja se on ollut hienoa, mutta en ollut aivan varma, mitä konepellin alla tapahtui, kun lisäsin sellaisen sovellukseeni. Tämän blogikirjoituksen tarkoituksena on siis auttaa minua ymmärtämään, miten gemit toimivat, ja toivottavasti auttaa myös sinua.
Ruby gem on pakattua ruby-koodia, jonka voit lisätä sovellukseesi. Näin voit säästää aikaa käyttämällä koodia, jonka muut ovat kirjoittaneet samanlaisten ongelmien ratkaisemiseksi. Jos esimerkiksi haluaisit muuttaa jonkin tekstin väriä, voisit asentaa ja käyttää colorize-helmeä. Saat kaiken sen toiminnallisuuden ilman, että sinun tarvitsee koskaan kirjoittaa koodia itse.
Sinatra on gem, Rack on gem, ja olin yllättynyt kuullessani, että jopa Rails on gem. Kaikki julkiset gemit julkaistaan RubyGems.orgin kautta. Siellä ihmiset voivat osallistua ja jakaa niitä yhteisön kanssa.
Aloitetaan asentamalla gem
Valitaan gem ja asennetaan se. Päätin lisätä sovellukseeni colorize-jalokiven, joka muuttaa syöttämämme merkkijonon väriä. Voit suorittaa gem install gem_nimi -ohjelman ladataksesi gemin tietokoneellesi ja saadaksesi sen sovellustesi käyttöön. Mietitkö, missä tuo gem asuu asennuksen jälkeen? Voit ajaa gem mikä gem_nimi ja se kertoo sinulle tarkalleen, missä se on.
Käyttääksesi kyseistä gemiä ohjelmakoodissamme sinun täytyy vaatia gemiä tiedostosi alkuun laittamalla require ‘gem_nimi’. Teemme tämän, jotta meillä on pääsy gemiin ja nyt meidän ei tarvitse kirjoittaa omaa koodia tekstin värittämiseksi.
Nyt kun olet asentanut ja vaatinut gemin, voit käyttää sitä. Yleensä, jos menet gemin GitHub-repoon, löydät tärkeää tietoa sen ominaisuuksista ja niiden käytöstä.
Käytetään sitä!
Luimme readme-tiedot ja nyt haluamme lisätä väriä tekstiimme. Olen lisännyt koodissani kolme eri väriä kutsumalla .colorze(:color) merkkijonoon.
Hienoa! Eikö tuo näytäkin hienolta? Asensimme siis helmemme ja se näyttää toimivan, mutta entä jos meillä on isompi sovellus, joka vaatii useita helmiä? Gemin asennuksen kutsuminen ja jokaisen gemin vaatiminen vaikuttaa työläältä. Varmasti on olemassa helpompi tapa.
Bundler
Bundler tekee elämästämme paljon helpompaa. Mikä on bundler? No se on tietysti helmi! Se seuraa jokaista gemiä ja asentaa juuri sen gemin ja version, jota tarvitset sovelluksessasi. Jotta voit käyttää bundleria, tarvitset projektisi hakemistossa olevan gemfile-tiedoston ja sen sisällä voit listata niin monta gemiä kuin haluat. Avaa Gemfile ja lisää gem ‘gem_nimi’.
Kun olet ajanut bundlerin asentamisen, saatat huomata, että asennetaan paljon gemejä, joita et ole itse lisännyt. Miksi näin on? Monet jalokivet vaativat, että niiden mukana asennetaan muita jalokiviä. Esimerkiksi rails vaatii monia muita helmiä, ja ne voivat vaatia muita helmiä ja niin edelleen. Bundler varmistaa, että kaikki asennetut gem-versiot ovat yhteensopivia keskenään.
Kunkin gemin oikeat versiot löydettyään se tallentaa nämä versiot toiseen tiedostoon nimeltä Gemfile.lock. Se mahdollistaa täsmälleen saman version asentamisen jokaiselle koneelle, jonka täytyy ajaa tätä sovellusta.
Minusta Gemfile.lock-tiedostosta näet, että lolize vaatii paint-hemmin ja versiot, joita se voi käyttää. Joten bundler nappaa sen ja oikean version meille. Eikö siitä ole apua? Kiitos bundler!
Se on siis siinä! Toivottavasti tämä on auttanut sinua ymmärtämään gemin ja bundlerin perusasiat. On olemassa monia helmiä, joita voit käyttää ja voit etsiä niitä täältä. https://rubygems.org/.