Condividi questa pagina

Impara X in Y minuti

Dove X=Ruby ecosystem

Generalmente chi usa ruby ha l'esigenza di avere differenti versioni di Ruby installate, gestire le proprie gemme, e le loro dipendenze.

Manager Ruby

Alcune piattaforme hanno Ruby pre-installato o disponibile come pacchetto. Molti sviluppatori Ruby non usano questi pacchetti, o se lo fanno, li usano solo per installare dei manager Ruby, i quali permettono di installare e gestire più versioni di Ruby in base al progetto su cui si lavora.

Di seguito i più famosi manager Ruby:

Ruby Versions

Ruby fu creato da Yukihiro "Matz" Matsumoto, il BDFL, (acronimo inglese che sta per "Benevolo dittatore a vita") , seppur ultimamente non è più del tutto vera; l'implementazione di Ruby è detta MRI (Matz' Reference Implementation), e dunque quando si legge di una versione Ruby, essa si riferisce sempre al rilascio di una MRI

Le tre maggiori versioni di Ruby in uso sono:

I cambiamenti tra la 1.8.7 a la 1.9.x sono maggiori di quelli tra la 1.9.3 a la 2.0.0. Per esempio, nella 1.9 vengono introdotti encodings e bytecode VM. Esistono ancora dei progetti basati sulla 1.8.7, ma stanno diventando una minoranza man mano che la community si trasferisce alle versioni 1.92 e 1.9.3

Ruby Implementations

L'ecosistema Ruby gode di molte implementazioni differenti di Ruby, ognuna con particolari punti di forza, da chiarire che ogni implementazione è scritta con un linguaggio diverso, ma esse sono tutte Ruby. Ogni implementazione ha feature extra ma tutte esse possono eseguire file ruby. Per esempio, JRuby è scritto in Java, ma non devi conoscere java per usarlo.

Implementazioni mature e compatibili:

Mediamente mature e compatibili:

Poco mature e compatibili:

Le implementazioni Ruby possono avere una propria versione, ma hanno sempre come target una specifica versione di MRI. Molte implementazioni hanno l'abilità di selezionare una versione specifica di MRI.

##Ruby Spec

La maggior parte delle implementazioni Ruby dipendono pesantemente su Ruby Spec. Ruby non ha una specifica ufficiale, quindi la community ha scritto una specifica eseguibile in Ruby per testare la compatibilità con MRI.

RubyGems

RubyGems è un package manager gestito dalla communtiy per Ruby. Rubygems viene installato con Ruby, quindi non c'è bisogno di scaricarlo separatamente.

I pacchetti Ruby sono chiamate "gemme", e possono essere hostate dalla community su RubyGems.org . Ogni gemma contiene il codice sorgente e del metadata, tra cui la versione, le dipendenze, autor* e licenz*.

Bundler

Bundler è un risolvitore di dipendenze, Esso usa il Gemfile di un progetto per cercare le dipendenze, dopo di che ottiene le dipendenze delle dipendenze ricorsivamente, Questo procedimento viene eseguito finchè tutte le dipendenze sono state risolte e scaricate, o si fermerà se un conflitto verrà trovato.

Bundler genererà un error se troverà dipendenze in conflitto, Per esempio, se la gemma A richiede la versione 3 o maggiore della gemma Z, ma la gemma B richiede la versione 2, Bundler ti notificherà del conflitto. Questo diventa di aiuto nel momento in cui si hanno molte gemme nel progetto, il che porta a un grande grafo di dipendenza da risolvere.

Testing

Il testing è un pezzo fondamentale della cultura Ruby, Ruby viene installato con il proprio testing framework chiamato minitest (O TestUnit per ruby 1.8.x). Esistono molte librerie con obiettivi differenti

Sii cordiale

La community Ruby è orgogliosa di essere una communtiy aperta, accogliente e variegata. Matz stesso è estremamente amichevole, e la generosità degli sviluppatori Ruby è fantastica.


Hai un suggerimento? Oppure una correzione? Apri un issue sul GitHub, o fa un pull request da solo!

In origine contribuita da Jon Smock, e modificata da 2 contributore(i).