Shim je malá knihovna, která přebírá a mění volání jiné knihovny, především kvůli kompatibilitě.
Udržování více verzí knihovny je nezbytné pro podporu klientů. Knihovny shim překládají volání staré knihovny na novou předtím, než je předají dál nové knihovně.
Příklad 1:
Instalace systému Linux se obvykle dodávají s jedinou verzí Ruby. Vývojáři Ruby potřebují mít na svých mnoha aktivních projektech různé verze Ruby. Rbenv tento problém řeší pomocí šémů.
Spuštění příkazu Ruby v Linuxu znamená kontrolu spustitelného souboru v cestě – tu prohledává zleva doprava. Takže spuštění příkazu Ruby rails server
znamená, že Linux najde a spustí Rails, spustitelný soubor Ruby, v prvním adresáři.
Rbenv přidá adresář shims
a načte do něj skripty shim před předřazením Cesty. Pro každou aplikaci Ruby existuje shim skript a spuštění aplikace Ruby nyní znamená spuštění odpovídajícího shim skriptu. Spuštění Rails tedy znamená spuštění skriptu Rails v adresáři shims
, a ne aplikace Rails v adresáři usr/local/bin
. Skript zjistí požadovanou verzi jazyka Ruby a poté spustí odpovídající aplikaci, v tomto případě Rails, pod touto očekávanou verzí jazyka Ruby.
Příklad 2:
Microsoft používá shimy k předstírání volání aplikace v systému Windows. Když aplikace provádí systémové volání, prochází „tabulkou importních adres“.
Můžete změnit tabulku a nahradit volání systému Windows voláním šimu. V příkladu je shim ‚version-lie‘. Aplikace si myslí, že je na počítači s Windows 7.
.