Ruby er et av de mest populære språkene som brukes på nettet. Vi har startet en ny sesjon her på Nettuts + som vil introdusere deg til Ruby, samt de flotte rammer og verktøy som går sammen med Ruby-utviklingen. I dag ser vi på det kjempebra pakkesystemet som Ruby tilbyr for distribusjon av programmer og biblioteker: Gems.
Det er ganske enkelt, egentlig. Du kan tenke på en Ruby Gem som bibliotek eller plugin. Det er litt funksjonalitet som du vil installere for å fylle et bestemt behov. Hvis det høres ut, er det noen praktiske problemer som edelstener løser:
Det er bare noen få ting du kan gjøre med edelstener.
Kort sagt, det er en perle for det.
Før vi kan installere og bruke edelstener må vi installere RubyGems biblioteket. Selvfølgelig trenger du Ruby installert først, men du burde ha det nå.
Hvis du er på Ruby 1.9. * (Det vi bruker i denne serien), trenger du ikke å bekymre deg for å installere RubyGems; den er innebygd. Hvis du har bestemt deg for å holde fast i Ruby 1.8. *, er det ikke så vanskelig å installere. Bare gå over til RubyGems nedlastingsside, last ned TAR eller ZIP, åpne den opp og kjøre rubin setup.rb
i terminalen fra den mappen Du trenger kanskje administratorrettigheter for å gjøre dette (sudo
på unix-systemer, start kommandolinjen med "Kjør som administrator" på Windows). Det får deg i gang.
Hvis du tror at du kanskje allerede har RubyGems installert, kjør perle -v
for å få versionsnummeret. Den nyeste versjonen er 1.6.2. Hvis du vil oppgradere, kjør perleoppdatering - system
. Igjen, trenger du kanskje administratorrettigheter. Jeg bør nevne at hvis du er på Windows og installert Ruby via RubyInstaller, har du RubyGems installert.
Så, nå at du har RubyGems-biblioteket installert, kan du bruke det til å installere alle edelstener du ønsker. Hvordan gjør du dette? Igjen er det ganske enkelt. Den vanskelige delen er å finne perlen du vil bruke; ofte kan du bare google for hvilken funksjonalitet du leter etter. Når du har funnet perlen, installer du den slik:
perle installasjon GEM_NAME
Det er viktig å være oppmerksom på dokumentasjonen for perlen, skjønt. Det kan være noen argumenter du bør legge til den kommandoen; Men i de fleste tilfeller bør det komme deg gjennom.
Ett annet notat om å installere edelstener: Det kan hende du oppdager at en perles dokumentasjon forteller deg å bruke sudo
når du installerer den. Hvis du er på en Mac og bruker RVM (som du burde være :)), bare gå sudo
av. Bruke den vil installere perlen for alle brukere på datamaskinen, og det kan føre til problemer med de flere Ruby-miljøene du kanskje har med RVM.
Når vi fortsetter i denne serien, bruker vi flere Ruby perler, så du får se hvordan de vil fungere i et "ekte" prosjekt. Hvis du vil prøve å installere noen nå, kan du prøve Markdown (maruku) perlen eller Amazon S3 (aws-s3) perlen.
perle installere maruku gem install aws-s3
Så, du har dine edelstener installert; hva nå? Vel, bruk dem selvfølgelig! Det er to måter du kan bruke edelstener på. Noen er frittstående rubinprogrammer som du kjører (oftest fra kommandolinjen) for å gjøre noe. Rails-perlen er et godt eksempel på dette. Du løper skinner nye PROJECT_NAME
fra kommandolinjen for å generere et nytt railsprosjekt; da vil du bruke den til andre tider for å generere modeller, kontrollere osv. Deretter er det perler som du bare vil bruke fra egne prosjekter, som Amazon S3 perlen. Det er ikke veldig bra på egenhånd, men det er ganske nyttig i forbindelse med koden din. Hvis du vil bruke en perle fra koden din, må du først kreve det. Dette gjøres vanligvis øverst på filen.
krever 'rubygems' # bare nødvendig på Ruby 1.8 krever 'aws / s3' # S3 perlen
Jeg tror ikke vi har diskutert krever
før; Ruby laster ikke alt som standard, så du kan bruke krever
å laste inn ekstra biblioteker du vil bruke. Vi får se mer av dette når vi fortsetter.
Til slutt gjør noen edelstener begge. Den maruku perlen vil konvertere Markdown til HTML. Jeg bruker den fra kommandolinjen hele tiden:
maruku doc.markdown
Det vil konvertere Markdown-dokumentet til HTML. Du kan imidlertid også bruke den fra koden din:
krever 'maruku' str = "# Dette er en tittel \ n \ n * noen \ n * liste \ n * elementer" md = Maruku.new (str) md.to_html_document
Når du har bygget et prosjekt, kan du dele det, eller bruke det på en annen datamaskin. Men alle andre som kjører det, må ha alle de rette juvelene installert. Nå kan du gjøre prosessen med å installere dem enkelt med et prosjekt som heter Bundler. Det er mye Bundler kan gjøre, men vi skal bare skrape overflaten akkurat nå.
Først av alt, Bundler er en perle selv; du kan installere den ved å kjøre perle installasjonspakker
.
Deretter, i roten til prosjektet ditt, opprett en fil som heter Gemfile
. Dette vil deklarere hvilke perler du trenger for dette prosjektet.
Første linje (r) av Gemfile din vil fortelle Bundler hvor du skal få edelstenene dine. Gems bor i online-lagre, så det må vite hvor de skal få dem. Mesteparten av tiden, bare ved hjelp av rubygems.org som kilde vil være tilstrekkelig, men du kan ha flere kilder hvis du vil.
kilde "http; // rubygems.org"
Deretter bare oppfør dine edelstener slik:
perle "skinner", "3.0.1" perle "maruku" perle "aws-s3",: krever => "aws / s3"
Legg merke til at vi kan si hvilken versjon av en perle vi trenger hvis vi trenger en bestemt versjon. Legg også merke til hash (vi har slått av parentesene fordi vi kan i dette tilfellet) på den tredje perlen. Dette forteller Bundler hvordan vi trenger krever
perlen. Dette er bare nødvendig hvis to ting er sanne: 1) en perle er nødvendig med et annet navn enn navnet det er installert med, og 2) vi bruker Bundler for å kreve perlene.
Hvis du har mange edelstener, kan du bruke Bundler til å kreve dem alle i koden din. Bare gjør dette:
krever 'bundler / setup' Bundler.require (: standard)
Dette vil laste opp alle disse edelstenene. Selvfølgelig er dette mye mer nyttig når du bruker noen av Bundlers avanserte konfigurasjoner.
Siste gang spurte jeg deg lesere / seere hva du vil se neste. Du sa tydelig? Web-ting !? Neste leksjon, vi skal fortsette å bruke det enkle rammeverket Sinatra til å bygge et nettsted. Inntil da!