シムとは、主に互換性を助けるために、別のライブラリへの呼び出しを横取りして変更する小さなライブラリです。
ライブラリの複数のバージョンを維持することは、クライアントをサポートするために必要なことです。
例 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 バージョンで実行します。