un shim este o bibliotecă mică care interceptează și schimbă apelurile către o altă bibliotecă, în principal pentru a ajuta la compatibilitate.
menținerea mai multor versiuni ale unei biblioteci este necesară pentru a vă sprijini clienții. Bibliotecile Shim traduc apelurile vechi în cele noi ale bibliotecii înainte de a le redirecționa către noua bibliotecă.
Exemplul 1:
instalările Linux vin în mod normal cu o singură versiune Ruby. Dezvoltatorii Ruby trebuie să aibă diferite versiuni Ruby pe numeroasele lor proiecte active. Rbenv folosește lamele pentru a rezolva această problemă.
rularea unei comenzi Ruby în Linux înseamnă verificarea executabilului din cale — pe care îl caută de la stânga la dreapta. Deci, rularea comenzii Rubyrails server
înseamnă că Linux găsește și rulează Rails, un executabil Ruby, în primul director.
Rbenv adaugă un shims
directorul și îl încarcă cu scripturi Shim înainte de a pregăti calea. Există un script shim pentru fiecare aplicație Ruby și rularea unei aplicații Ruby înseamnă acum rularea scriptului shim potrivit. Deci, rularea rails înseamnă executarea scriptului Rails în directorul shims
și nu aplicația Rails în usr/local/bin
. Scriptul elaborează versiunea Ruby necesară și apoi rulează aplicația sa de potrivire, în acest caz Rails, sub acea versiune Ruby așteptată.
Exemplul 2:
Microsoft folosește lamele pentru a falsifica apelurile Windows ale unei aplicații. Atunci când o aplicație face un apel de sistem trece prin ‘Import Address Table’.