Een shim is een kleine bibliotheek die aanroepen naar een andere bibliotheek onderschept en wijzigt, voornamelijk om compatibiliteit te bevorderen.
Het onderhouden van meerdere versies van een bibliotheek is noodzakelijk om uw klanten te ondersteunen. Shim bibliotheken vertalen oude naar nieuwe library calls alvorens door te sturen naar de nieuwe library.
Voorbeeld 1:
Linux installaties worden normaal geleverd met een enkele Ruby versie. Ruby ontwikkelaars moeten verschillende Ruby versies hebben op hun vele actieve projecten. Rbenv gebruikt shims om dit probleem op te lossen.
Het uitvoeren van een Ruby commando in Linux betekent controleren op de executable in het pad – dat het van links naar rechts doorzoekt. Dus, het uitvoeren van het Ruby commando rails server
betekent dat Linux Rails, een Ruby executable, vindt en uitvoert in de eerste directory.
Rbenv voegt een shims
directory toe en laadt deze met shim scripts voordat het Path wordt voorgeprogrammeerd. Er is een shim script voor elke Ruby applicatie en het draaien van een Ruby applicatie betekent nu het draaien van het bijbehorende shim script. Dus, het draaien van rails betekent het uitvoeren van het Rails script in de shims
directory en niet de Rails applicatie in usr/local/bin
. Het script berekent de vereiste Ruby-versie en voert vervolgens de bijbehorende applicatie uit, in dit geval Rails, onder die verwachte Ruby-versie.