Una shim è una piccola libreria che intercetta e modifica le chiamate a un’altra libreria, principalmente per aiutare la compatibilità.
Mantenere più versioni di una libreria è necessario per supportare i tuoi clienti. Le librerie di shim traducono le chiamate dalla vecchia alla nuova libreria prima di inoltrarle alla nuova libreria.
Esempio 1:
Le installazioni Linux sono normalmente fornite con una sola versione di Ruby. Gli sviluppatori Ruby hanno bisogno di avere diverse versioni di Ruby sui loro molti progetti attivi. Rbenv usa gli spessori per risolvere questo problema.
Eseguire un comando Ruby in Linux significa controllare l’eseguibile nel percorso – che cerca da sinistra a destra. Quindi, eseguire il comando Ruby rails server
significa che Linux trova ed esegue Rails, un eseguibile Ruby, nella prima directory.
Rbenv aggiunge una directory shims
e la carica con gli script shim prima di aggiungere il Path. C’è uno script shim per ogni applicazione Ruby ed eseguire un’applicazione Ruby ora significa eseguire lo script shim corrispondente. Quindi, eseguire rails significa eseguire lo script Rails nella directory shims
e non l’applicazione Rails in usr/local/bin
. Lo script calcola la versione di Ruby richiesta e poi esegue l’applicazione corrispondente, in questo caso Rails, sotto la versione di Ruby prevista.