シムとは、主に互換性を助けるために、別のライブラリへの呼び出しを横取りして変更する小さなライブラリです。
ライブラリの複数のバージョンを維持することは、クライアントをサポートするために必要なことです。
例 1:
Linux のインストールには通常、1 つの Ruby バージョンが付属しています。 Ruby の開発者は、多くのアクティブなプロジェクトで異なる Ruby バージョンを持つ必要があります。 Rbenv はこの問題を解決するために shims を使います。
LinuxでRubyコマンドを実行することは、パスの中に実行ファイルがあるかどうかをチェックすることです。
Rbenv は shims
ディレクトリを追加し、シム スクリプトをロードしてからパスを先頭に追加します。 各Rubyアプリケーションに対応したshimスクリプトがあり、Rubyアプリケーションを実行することは、それに対応したshimスクリプトを実行することになります。 つまり、railsを実行するということは、usr/local/bin
にあるRailsアプリケーションではなく、shims
ディレクトリにあるRailsスクリプトを実行することを意味します。 スクリプトは必要な Ruby のバージョンを計算し、一致するアプリケーション (この場合は Rails) をその期待される Ruby バージョンで実行します。

例 2:
Microsoft はシムを使用して、アプリケーションからの Windows 呼び出しを偽装しています。

テーブルを変更して、Windows 呼び出しをシムへの呼び出しと置き換えることが可能です。 この例のシムは ‘version-lie’ シムです。 アプリケーションは Windows 7 マシンにいると考えます。
