shim to mała biblioteka, która przechwytuje i zmienia wywołania do innej biblioteki, głównie w celu ułatwienia kompatybilności.
utrzymanie wielu wersji biblioteki jest niezbędne do obsługi klientów. Biblioteki Shim tłumaczą stare Na Nowe wywołania biblioteki przed przekierowaniem do nowej biblioteki.
przykład 1:
instalacje Linuksa zwykle zawierają pojedynczą wersję Ruby. Programiści Rubiego muszą mieć różne wersje Rubiego w swoich wielu aktywnych projektach. Rbenv używa podkładek, aby rozwiązać ten problem.
Uruchomienie polecenia Ruby w Linuksie oznacza sprawdzenie pliku wykonywalnego w ścieżce — którą przeszukuje od lewej do prawej. Uruchomienie polecenia Ruby rails server
oznacza, że Linux Znajduje i uruchamia Rails, plik wykonywalny Ruby, w pierwszym katalogu.
Rbenv dodajeshims
katalogu i ładuje go skryptami Shim przed prependingiem ścieżki. Istnieje skrypt shim dla każdej aplikacji Ruby i uruchomienie aplikacji Ruby oznacza teraz uruchomienie pasującego skryptu shim. Tak więc uruchomienie rails oznacza wykonanie skryptu Rails w katalogushims
, a nie aplikacji Rails w kataloguusr/local/bin
. Skrypt wypracowuje wymaganą wersję Rubiego, a następnie uruchamia jego pasującą aplikację, w tym przypadku Rails, pod oczekiwaną wersją Rubiego.
przykład 2:
Microsoft używa podkładek do fałszowania wywołań aplikacji Windows. Gdy aplikacja wykonuje wywołanie systemowe, przechodzi przez „Import Address Table”.
możesz zmienić tabelę i zastąpić wywołanie Windows wywołaniem shim. Shim w przykładzie jest shim’ version-lie’. Aplikacja myśli, że jest na komputerze z systemem Windows 7.