et shim er et lille bibliotek, der opfanger og ændrer opkald til et andet bibliotek, primært for at hjælpe Kompatibilitet.
vedligeholdelse af flere versioner af et bibliotek er nødvendigt for at understøtte dine kunder. Shim-biblioteker oversætter gamle til nye biblioteksopkald, før de videresendes til det nye bibliotek.
eksempel 1:
Linuks-installationer leveres normalt med en enkelt Ruby-version. Ruby udviklere skal have forskellige Ruby versioner på deres mange aktive projekter. Rbenv bruger shims til at løse dette problem.
at køre en Ruby — kommando betyder at kontrollere den eksekverbare i stien-som den søger fra venstre mod højre. Så kører Ruby-kommandoen rails server
betyder, at Linuk finder og kører Rails, en Ruby-eksekverbar, i den første mappe.
rbenv tilføjer en shims
mappe og indlæser det med shim scripts før prepending stien. Der er et shim-script til hver Ruby-applikation, og at køre en Ruby-applikation betyder nu at køre det matchende shim-script. Så running rails betyder at udføre Rails-scriptet ishims
– mappen og ikke Rails-applikationen iusr/local/bin
. Scriptet udarbejder den krævede Ruby-version og kører derefter sin matchende applikation, i dette tilfælde skinner, under den forventede Ruby-version.