Una cuña es una pequeña biblioteca que intercepta y cambia llamadas a otra biblioteca, principalmente para ayudar a la compatibilidad.
Mantener varias versiones de una biblioteca es necesario para dar soporte a sus clientes. Las bibliotecas Shim traducen llamadas antiguas a nuevas bibliotecas antes de reenviar a la nueva biblioteca.
Ejemplo 1:
Las instalaciones de Linux normalmente vienen con una sola versión de Ruby. Los desarrolladores de Ruby necesitan tener diferentes versiones de Ruby en sus muchos proyectos activos. Rbenv utiliza cuñas para resolver este problema.
Ejecutar un comando Ruby en Linux significa comprobar el ejecutable en la ruta, que busca de izquierda a derecha. Por lo tanto, ejecutar el comando Ruby rails server
significa que Linux encuentra y ejecuta Rails, un ejecutable Ruby, en el primer directorio.
rbenv tendremos añade un shims
directorio y se carga con la laminilla de secuencias de comandos antes de anteponiendo el Camino. Hay un script shim para cada aplicación Ruby y ejecutar una aplicación Ruby ahora significa ejecutar el script shim correspondiente. Por lo tanto, ejecutar rails significa ejecutar el script Rails en el directorio shims
y no la aplicación Rails en usr/local/bin
. El script elabora la versión de Ruby requerida y luego ejecuta su aplicación correspondiente, en este caso Rails, bajo esa versión de Ruby esperada.
Ejemplo 2:
Microsoft utiliza shims para falsificar las llamadas de Windows de una aplicación. Cuando una aplicación hace una llamada al sistema, pasa por la «Tabla de direcciones de importación».
Usted puede cambiar la tabla y reemplazar las Ventanas de la llamada con una llamada a una calza. La cuña en el ejemplo es una cuña ‘version-lie’. La aplicación cree que está en una máquina con Windows 7.