Pubblico di destinazione:
Questo articolo vuole essere utile per chiunque abbia la necessità di distribuire o gestire più installazioni di Ruby su una singola macchina. Un lettore dovrebbe avere una conoscenza di base di come funzionano le gemme Ruby e Ruby all'interno di un sistema operativo.
Introduzione
Immagine:Logo Ruby di Yukihiro Matsumoto, Ruby Visual Identity Team / licenza CC BY-SA 2.5
La gestione di più ambienti Ruby può essere una sfida. Ruby è un linguaggio open source, quindi le nuove versioni possono essere frequenti e tali versioni possono introdurre drastiche modifiche alle funzionalità. Abbina questo potenziale all'uso di gemme di terze parti che possono dipendere dalla funzionalità all'interno di specifiche versioni di Ruby e la tua applicazione può trovarsi rapidamente a lottare per soddisfare tutte le dipendenze di cui ha bisogno solo per l'esecuzione. RVM (in alternativa ampliato come Ruby enVironment Manager o Ruby Version Manager) affronta questo problema fornendo un set di strumenti da riga di comando che ti consentono di controllare attivamente non solo la versione di Ruby utilizzata dalla tua applicazione, ma anche i set di gemme e le versioni utilizza. Di seguito discuteremo cos'è RVM, toccando ciascuno dei vantaggi che ha da offrire.
.
Gestire più ambienti Ruby
RVM consente di installare più versioni del linguaggio di programmazione Ruby su una singola macchina. Un'installazione nativa del linguaggio di programmazione Ruby installerà i binari del linguaggio in un comune bin
directory sul sistema operativo; quindi qualsiasi modifica a quei binari installati influirà su tutte le applicazioni Ruby ospitate sulla macchina. Anche incrementi di versione relativamente minori, ad esempio dalla 2.1.4 alla 2.2.1, possono introdurre modifiche al linguaggio che interrompono il comportamento del linguaggio esistente.
.
RVM consente di isolare questi binari di lingua in file binari gestiti separatamente ambienti, che possono essere utilizzati a piacimento sul sistema. Raggiunge questo isolamento incapsulando ogni installazione in un insieme separato di directory e dipendenze e fornendo strumenti a riga di comando facili da usare per passare rapidamente da una versione all'altra. RVM gestisce lo scambio di tutti i percorsi di esecuzione rilevanti, le variabili di ambiente e le librerie di terze parti installate, consentendo agli sviluppatori di concentrarsi sullo sviluppo delle loro applicazioni invece che sulla gestione delle loro dipendenze.
.
Perché RVM è importante?
Per una singola piccola applicazione, RVM potrebbe sembrare eccessivo. Tuttavia, una volta che una base di codice raggiunge un certo livello di complessità, potrebbe essere difficile tenere traccia esattamente delle dipendenze su cui si basa l'applicazione. Inoltre, man mano che un'applicazione cresce e sfrutta varie Gemme Ruby, queste librerie di terze parti possono introdurre ulteriori dipendenze, rendendo una semplice modifica della versione un evento complesso e pieno di rischi. Ad esempio, il rilascio della versione 2.1.0 ha introdotto una modifica sostanziale nei parser REXML che molti Gem utilizzano per fornire funzionalità SOAP. Questa considerazione è fondamentale anche per i server Web ospitati da VPS, che possono ospitare più applicazioni Ruby contemporaneamente (come un server di lavoro ritardato basato su Resque, un server Web basato su Rails e una console di amministrazione basata su Sinatra). Ottenere diverse applicazioni diverse con diversi insiemi di dipendenze che si comportano correttamente può essere di per sé un lavoro a tempo pieno. Incapsulando diverse versioni del linguaggio Ruby in ambienti separati, RVM consente allo sviluppatore di testare nuove versioni, distribuire applicazioni esistenti senza preoccuparsi di modifiche sostanziali e garantire che la gestione dell'infrastruttura delle applicazioni richieda il minor tempo possibile.
.
Risoluzione dei conflitti di dipendenza
Il vantaggio più ovvio ottenuto tramite l'uso di RVM è la gestione delle dipendenze. Incapsulando le installazioni del linguaggio di programmazione Ruby in ambienti separati basati sulla riga di comando, puoi controllare più facilmente le dipendenze delle versioni. RVM, insieme a un framework di gestione Gem come Bundler, può rendere i conflitti di dipendenza basati sulla lingua un ricordo del passato:devi semplicemente verificare che esista una versione di Gem con cui stai lavorando che sia compatibile con la tua installazione attuale. Inoltre, l'utilizzo di RVM ti consente di essere sicuro che verranno installate solo le gemme di cui hai bisogno. Ogni ambiente Ruby gestito da RVM ha il proprio set di Gem e, come tale, non c'è contaminazione incrociata tra le app che potrebbero utilizzare Gem che influiscono sull'ambiente di esecuzione di Ruby stesso.
.
Semplificazione della distribuzione
Oltre a mitigare le modifiche sostanziali e risolvere i conflitti di dipendenza, RVM può semplificare il processo di distribuzione per le applicazioni Ruby. RVM offre funzionalità come "Set di gemme con nome", che ti consentono di specificare rapidamente e facilmente le dipendenze per la tua applicazione Ruby. Inoltre, Ruby utilizza una cache condivisa di versioni gem, che riduce lo spazio su disco complessivo utilizzato dalla distribuzione di Ruby. Infine, RVM lavora per garantire che tutte le dipendenze specificate siano contenute interamente all'interno dello spazio utente, riducendo i rischi per la sicurezza ed eliminando la necessità di eseguire l'applicazione come utente root.
.
Conclusione
L'articolo di cui sopra graffia solo la superficie delle funzionalità offerte da RVM. Utilizzando RVM per gestire l'ambiente della tua applicazione, puoi alleviare i problemi di distribuzione, mitigare i problemi di aggiornamento e creare un insieme affidabile di dipendenze per la tua applicazione Ruby. Insieme a strumenti come Bundler, RVM rende l'installazione, l'esecuzione e la gestione di un'applicazione Ruby un processo semplice e snello.
Atlantic.Net
Offriamo molte applicazioni di installazione in hosting VPS con un clic che offrono anche un processo semplice e snello. Abbiamo molte applicazioni popolari come WordPress, cPanel Hosting e Docker Hosting.
.