rbenv を使用してシェル スクリプトに Ruby のバージョンを指定するにはどうすればよいでしょうか?

rbenv を使用してシェル スクリプトに Ruby のバージョンを指定するにはどうすればよいでしょうか?

Ruby で短いスクリプトを書くつもりです。そして、shebang または別の方法で Ruby のバージョンを指定したいと思います。

このスクリプトは多くの環境で使用します。環境では rbenv を使用していますが、どのバージョンの ruby​​ がインストールされているかはわかりません。

指定されたバージョンの Ruby がインストールされていない場合、スクリプトは失敗します。

どうすればいいでしょうか?従うべき良い方法はありますか?

答え1

による公式ドキュメント次のようにスクリプトにプレフィックスを付ける必要があるようです:

#!/usr/bin/env ruby

rbenv次に、使用する Ruby のバージョンを指定するために、次のいずれかを実行します。

抜粋:https://github.com/sstephenson/rbenv

Rubyのバージョンの選択

shim を実行すると、rbenv次のソースからこの順序で読み取って、使用する Ruby バージョンを決定します。

  1. 指定されている場合、環境変数。現在のシェル セッションでこの環境変数を設定するには、shell コマンドRBENV_VERSIONを使用できます。rbenv

  2. .ruby-version実行中のスクリプトのディレクトリとその親ディレクトリをそれぞれ検索して、ファイルシステムのルートに到達するまで、最初に見つかったファイル。

  3. .ruby-version現在の作業ディレクトリとその各親ディレクトリをファイルシステムのルートに到達するまで検索して最初に見つかったファイル。.ruby-version現在の作業ディレクトリ内のファイルは、rbenvlocal コマンドを使用して変更できます。

  4. グローバル~/.rbenv/versionファイル。このファイルは、global コマンドを使用して変更できますrbenv。グローバル バージョン ファイルが存在しない場合は、 「システム」Ruby (つまり、パスにないrbenv場合は実行されるバージョン) を使用すると想定されます。rbenv

.ruby-versionこのコマンドを使用して、 Ruby スクリプトとともにディレクトリ内にファイルを作成できます。

$ rbenv local 1.9.3-p327

関連情報