Mikä on rubiinijalokivi?

Kun kuulin ensimmäisen kerran rubiinijalokivistä, ne vaikuttivat melko maagisilta. Suorittamalla bundle install voisin jotenkin hankkia näitä maagisia jalokiviä, jotka saisivat koodini tekemään kaikenlaisia asioita, jotka tuntuivat ylittävän viikon 1 Flatiron-opiskelijan kykyni. Mario Kartin ”esinelaatikoiden” tapaan jalokivet näyttävät antavan käyttäjälleen supervoimia.

Ruby-jalokivillä saat taikavoimia!

Aikomukseni on käyttää blogiani siihen, että voisin syventyä syvällisemmin ohjelmoinnin käsitteisiin, jotka herättävät uteliaisuuteni ja joita en täysin ymmärrä. Ensimmäisessä blogikirjoituksessani aion kumota Ruby-jalokivien mystisen, maagisen luonteen.

Mikä on Ruby-jalokivi?

Ei, Ruby-jalokivet eivät ole taikuutta. Ne ovat yksinkertaisesti avoimen lähdekoodin kirjastoja, jotka sisältävät Ruby-koodia ja jotka on pakattu pienellä lisätiedolla . Gemin käyttäminen antaa ohjelmoijalle mahdollisuuden käyttää gemin sisältämää koodia omassa ohjelmassaan ilman, että koodia on erikseen lisättävä.

Gemsejä voidaan käyttää kaikenlaisiin tarkoituksiin, ja voit tutustua erilaisiin gemseihin osoitteessa https://rubygems.org/. Saadaksesi paremman käsityksen siitä, mitä gemit voivat tehdä, tässä on pari suosittua gemiä ja niiden toiminnot:

  • Bundler – Tarjoaa Ruby-projekteille yhtenäisen ympäristön seuraamalla ja asentamalla juuri ne gemit ja versiot, joita tarvitaan. Se on kaikkien aikojen ladatuin helmi numero 1, mutta lisää Bundlerista myöhemmin.
  • RSpec – Testauskehys, joka tukee Behavior Driven Developmentia Rubylle.
  • Devise – Devise toimii todennuksen kanssa. Millä tahansa verkkosivustolla, joka tarvitsee käyttäjän kirjautumista, Devise hoitaa kirjautumisen, rekisteröitymisen, salasanan palauttamisen jne.
  • JSON – Tarjoaa API:n JSON:n jäsentämiseen tekstistä.
  • Nokogiri – Tarjoaa HTML-, XML-, SAX- ja Reader-parserit XPath- ja CSS-selektorituella.
  • Rails – Rails on helmi! Rails tarjoaa fullstack-kehyksen, jonka avulla Ruby voidaan muuntaa web-sovelluksiksi.

Jalokivien asentaminen

Tänä päivänä helmien käyttäminen on helppoa! Gemsin asentaminen paikallisesti on yhtä yksinkertaista kuin yksi komento: gem install . Install-komento hakee koodin, lataa sen tietokoneellesi ja asentaa gemin ja kaikki tarvittavat riippuvuudet. Lopuksi se rakentaa dokumentaation asennetuille helmille.

Bundlerin asentaminen vaatii vain yhden gemin asentamisen

Vaikka jotkin gemit, kuten Bundler, vaativat vain yhden gemin asentamisen, toisilla gemeillä on riippuvuuksia, jotka vaativat useamman gemin asentamisen:

Draperin asentaminen edellytti myös Request Store- ja Active Model Serializers -jalokivien asentamista

Näkyäksesi kaikki paikallisesti asennetut jalokivet, käytä komentoa gem list .

Jalokivien käyttäminen

Nyt tärkeämpää on, miten voimme käyttää asennettuja jalokiviä? No, se riippuu jalokiven tyypistä. Jotkut gemit, kuten Rails, ovat itsenäisiä Ruby-ohjelmia, jotka voi ajaa komennosta.

Jotkut gemit ovat suhteellisen hyödyttömiä yksinään, mutta uskomattoman hyödyllisiä, kun niitä käytetään projektin sisällä. Jotta voit käyttää gemiä omasta koodistasi käsin, se on vaadittava ensin tiedoston yläosassa – require 'gem_name' . Esimerkiksi Prysta on nopeasti tullut yksi suosikkihelmiäni projekteissa työskennellessäni. Koodini i̶s̶n̶’̶t̶ ̶a̶l̶w̶a̶y̶s̶ ei melkein koskaan ole oikein, kun kirjoitan sen ensimmäisen kerran, ja Pry tekee virheenkorjauksesta paljon tehokkaampaa ja hieman vähemmän tuskallista. Kuluneella viikolla opimme API:ista ja tarvitsimme Pry:tä ja paria muuta gemiä saadaksemme projektin valmiiksi.

Vaikka gemit ovat hyvin yksinkertaisia, jos tarvitset niitä vain omassa koneessasi, ne muuttuvat hieman monimutkaisemmiksi, jos haluat levittää tai julkaista projektisi. Kaikkien muiden, jotka suorittavat projektiasi, on asennettava tietokoneelleen kaikki tarvittavat gemit ja niiden oikeat versiot. Onneksi meillä on RubyGems ja Bundler, jotka virtaviivaistavat prosessia.

RubyGems on kehys, joka yksinkertaistaa jalokivien jakamista

Osaksi jalokivien taikaa on se, että voimme kaikki käyttää niitä, ja RubyGems on pakettihallinta, joka tekee sen mahdolliseksi. Se tarjoaa vakiomuodon Ruby-jalokivien jakeluun, hallitsee jalokivien asennusta ja palvelimen niiden jakelua varten. RubyGems julkaistiin yleisölle vasta 14. maaliskuuta 2004 (Pi:n päivä! π) Vaikka RubyGems on ollut olemassa Ruby 1.8:sta lähtien, se oli osa Rubyn standardijakelua vasta Ruby 1.9:ssä. Joten Rubyn aloittelijoille, kuten minulle, RubyGems asennetaan automaattisesti tietokoneellesi, kun asennat Rubyn.

Miten rubyistit elivät koskaan ilman RubyGemsiä?

Elämä oli paljon vaikeampaa. Jos haluat koko tarinan, suosittelen lämpimästi katsomaan André Arkon esityksen ”How does Bundler work, anyway?” RailsConf 2015 -tapahtumasta. Tässä minun tiivistetty versioni:

Koodin lataaminen aloitettiin require:llä, ja require:n käyttäminen on pohjimmiltaan sama kuin koodin lisääminen tiedostoon. Yksinkertaisimmillaan se on metodi, joka poimii koodia argumenttitiedostosta.

def require(filename)
eval File.name(filename)
end

Require antaa käyttäjälle mahdollisuuden ladata mitä tahansa paikallista koodia etsimällä käyttäjän $LOAD_PATH-tiedostosta. $LOAD_PATH on globaali muuttuja ja joukko absoluuttisia polkuja. Niin kauan kuin koodin hakemisto sijaitsee jossakin $LOAD_PATH:n sisällä, require pystyy löytämään sen.

Vaikka require sopii hyvin paikalliseen koodiin, entä jos haluaisit hakea koodia jostain muualta? Se oli työläs prosessi – sinun täytyi etsiä koodi, ladata se, tallentaa se jonnekin tietokoneellesi ja lisätä se jonnekin $LOAD_PATH:iin.

Sen seurauksena setup.rb kehittyi helpottamaan prosessia. Setup.rb (joka on edelleen olemassa) on yleinen asennusohjelma Rubyn skripteille ja kirjastoille. Se oli merkittävä parannus verrattuna require, koska se kopioi kaikki Ruby-tiedostot hakemistoon, joka oli jo $LOAD_PATH:ssa. Kehittäjät ovat luonnostaan laiskoja, ja setup.rb säästi meiltä pari askelta. Setup.rb:llä oli kuitenkin omat ongelmansa. Siinä ei ollut versionseurantaa eikä mahdollisuutta poistaa ohjelmaa! Ainoa varma tapa tietää, mikä versio oli käytössä, oli kirjoittaa versionumero ylös asennuksen yhteydessä. Kuten voitte kuvitella, kirjastojen käyttäminen oli melkoinen katastrofi.

Vuonna 2004 RubyGems tuli apuun! Nyt muiden ihmisten koodi eli gemit voitiin asentaa tai poistaa yhdellä komennolla! Se oli vallankumouksellista. RubyGemsillä oli toinenkin kikka hihassaan – se pystyi käsittelemään eri ohjelmistoversioita, ja jokainen versio pidettiin omassa erillisessä kansiossaan.

Bundler ratkaisee gem-riippuvuudet

Niin uskomattomalta kuin RubyGems tuntuikin, siinä oli yksi luontainen vika. Jos halusit jakaa projektin, miten varmistit, että uudella käyttäjällä oli kaikki tarvittavat jalokivet?RubyGemsin nykyisellä kokoonpanolla, jos kehittäjä suoritti gem install foo ja alkoi käyttää uutta jalokiveä sovelluksessa, muita projektin kehittäjiä piti kehottaa suorittamaan gem install foo . Tietyt jalokivet saattoivat toimia vain tiettyjen versioiden kanssa toisista jalokivistä, ja jalokivi- ja versioriippuvuuksien yhteensovittaminen kävi yhä vaikeammaksi.

Alas, saavumme Bundleriin! Bundler on olemassa ratkaisemaan gem-versioriippuvuusongelman seuraamalla ja asentamalla juuri ne gemit ja versiot, joita tarvitaan. Bundler toimii Rubyn gem-tiedoston ”gemfile” kautta, joka kertoo Bundlerille, mitä helmiä pitää etsiä ja mistä niitä pitää etsiä. https://rubygems.org on oletuslähde, mutta jos gemsejä on olemassa yksityisellä palvelimella, tämä lähde voidaan korvata näiden tiettyjen gemsien osalta.

Esimerkki Gemfile – Lähde: http://bundler.io/rationale.html

Asennettuaan tarvittavat jalokivet (jos tietokoneellasi ei vielä ole niitä) Bundler kirjoittaa kaikki asentamansa jalokivet ja versiot toiseen tiedostoon, Gemfile.lock. Tämä lukitustiedosto mahdollistaa täsmälleen samojen versioiden asentamisen jokaiselle koneelle, joka käyttää sovellusta.

Bundlerin käyttäminen on yksinkertaista. Ensin se on asennettava, ja koska Bundler on itse gem, voimme tehdä sen seuraavasti: gem install bundler . Kun Bundler on asennettu, voit käyttää mitä tahansa gemiä omassa projektissasi kahdessa vaiheessa:

  1. Lisää gemi projektisi juuressa olevaan gemfileen
  2. Asuorita bundle install terminaalissasi

Lisätietoa Bundlerin erityispiirteistä löydät osoitteesta http://bundler.io/.

Vastaa

Sähköpostiosoitettasi ei julkaista.