miseで、 .ruby-version などのファイルを参照してバージョンを決めるよう設定してみた

以前、 rbenv から mise-en-place (mise) に乗り換えた記事を書きました。
Apple Silicon + macOS Sequoia にて、 mise で Ruby 3.0 系をビルドしたら maybe_unused のBUILD FAILEDになったため、対応した - メモ的な思考的な

その後も、プログラミング言語や開発ツールのバージョン管理として、 mise を引き続き使っています。
Home | mise-en-place

 
mise では mise.toml という設定ファイルにて、複数のプログラミング言語のバージョンを管理できます。
Configuration | mise-en-place

一方、リポジトリによっては mise.toml ではなく、 .ruby-version.node-version.python-version などのファイルでバージョンを管理しています。

 
例えば、次の記事にあるように、Rubyでは .ruby-version が幅広く活用されています。
.ruby-version の歴史とその活用法 - pockestrap

また、GitHub ActionsでNode.jsをセットアップする actions/setup-node では、 mise.toml を読むことができるようにするプルリクはあるもののマージされていません。そのため、まだ .node-version が必要です。
feat: add support for mise.toml file by gperdomor · Pull Request #1421 · actions/setup-node

 
そこで、 mise.toml の中でバージョンを定義するのではなく、miseが .ruby-version などによりバージョンを決められないかを調べてみたことから、メモを残します。

 
目次

 

環境

  • mac
  • mise 2026.2.2

 

結論:idiomatic_version_file_enable_tools を設定する

まさにその用途の設定が、miseの公式ドキュメントに記載されていました。
idiomatic_version_file_enable_tools | Settings | mise-en-place

mise.toml

[settings]
idiomatic_version_file_enable_tools = ["ruby", "node"]

と書くことで、RubyとNode.jsは idiomatic version file である .ruby-version.node-version を参照してバージョンが決まります。
Idiomatic version files | Configuration | mise-en-place

 
実際にどんなふうになるかを試してみます。

 

動作確認環境

空っぽのディレクトmise_idiomatic_version_file_enable_tools_example を用意します。

% ls -a
.       ..

 
また、mise ls では

  • Node.js
    • 複数インストールされており、グローバルの config.toml によって、22.14.0 が指定されている
  • Ruby
    • インストールされているが、何も指定されていない

となっています。

% mise ls
Tool    Version  Source                      Requested 
node    22.14.0  ~/.config/mise/config.toml  22.14.0
node    24.12.0 
ruby    3.4.8   

 

グローバル設定がない状態で idiomatic version file を参照する

今回の場合はRubyが該当します。

まずは、idiomatic version file である .ruby-version へ、Ruby 3.4.8が使えるよう定義を追加・作成します。

% echo 3.4.8 > .ruby-version

% ls -a
.       ..      .ruby-version

 
mise ls で確認したところ、.ruby-version を作成しただけでは、miseでは無効のままでした。

% mise ls
Tool    Version  Source                      Requested 
node    22.14.0  ~/.config/mise/config.toml  22.14.0
node    24.12.0 
ruby    3.4.8   

 
この状態で idiomatic_version_file_enable_tools 設定を追加します。

今回はグローバルではなく、このリポジトリ内に限定したいため、 --local フラグを追加し、リポジトリ内に mise.toml ファイルを作成します。
Global Flags | mise settings | mise-en-place

すると、初回実行のためにエラーが出ました。

% mise settings add --local idiomatic_version_file_enable_tools ruby
mise ERROR error parsing config file: /path/to/mise_idiomatic_version_file_enable_tools_example/mise.toml    
mise ERROR Config files in /path/to/mise_idiomatic_version_file_enable_tools_example/mise.toml are not trusted.
Trust them with `mise trust`. See https://mise.jdx.dev/cli/trust.html for more information.
mise ERROR Run with --verbose or MISE_VERBOSE=1 for more information

 

今回は設定ファイルを信頼して良いため、メッセージ通り mise trust を実行します。
mise trust | mise-en-place

% mise trust

mise trusted /path/to/mise_idiomatic_version_file_enable_tools_example

 
再度 mise settings add を実行した後にファイルを確認すると、新しく mise.toml ができていました。

% mise settings add --local idiomatic_version_file_enable_tools ruby

% ls -a
.       ..      .ruby-version   mise.toml

 
mise.toml を見ると、 idiomatic_version_file_enable_tools が設定されていました。

% cat mise.toml
[settings]
idiomatic_version_file_enable_tools = ["ruby"]

 
mise ls で確認すると、 .ruby-version に書かれたRubyが使われるようになりました。

% mise ls
Tool    Version  Source                                                                   Requested
node    22.14.0  ~/.config/mise/config.toml                                               22.14.0
node    24.12.0 
ruby    3.4.8    /path/to/mise_idiomatic_version_file_enable_tools_example/.ruby-version  3.4.8

 
バージョンも切り替わっています。

% ruby --version
ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [arm64-darwin24]

 

グローバル設定がある状態で idiomatic version file を参照する

次はグローバル設定のあるNode.jsで動作を見ていきます。

最初にNode.jsのバージョンを確認すると、グローバル設定されている v22.14.0 が表示されます。

% node --version
v22.14.0

 
次に、リポジトリ内のバージョンとして 24.12.0 が使えるよう、 .node-version ファイルを作成します。

% echo 24.12.0 > .node-version

% ls -a
.       ..      .node-version   .ruby-version   mise.toml

 
中身を確認します。

% cat .node-version 
24.12.0

 
mise ls で確認すると、まだグローバル設定が有効になっています。

% mise ls
Tool    Version  Source                                                                   Requested
node    22.14.0  ~/.config/mise/config.toml                                               22.14.0
node    24.12.0 
ruby    3.4.8    /path/to/mise_idiomatic_version_file_enable_tools_example/.ruby-version  3.4.8  

 
あらためてNode.jsのバージョンを確認しますが、切り替わっていません。

% node --version
v22.14.0

 
Rubyの時と同じように、Node.jsに対しても --local フラグ付きで idiomatic_version_file_enable_tools を設定します。

% mise settings add --local idiomatic_version_file_enable_tools node

 
mise.toml ファイルを確認すると、 node が増えています。

% cat mise.toml
[settings]
idiomatic_version_file_enable_tools = ["ruby", "node"]

 
mise ls すると、Node.jsのバージョンが切り替わっていました。

% mise ls
Tool    Version  Source                                                                   Requested
node    22.14.0 
node    24.12.0  /path/to/mise_idiomatic_version_file_enable_tools_example/.node-version  24.12.0
ruby    3.4.8    /path/to/mise_idiomatic_version_file_enable_tools_example/.ruby-version  3.4.8

 
実際のバージョンも 24.12.0 へと切り替わりました。

% node --version
v24.12.0

 
以上で、miseが .ruby-version.node-version を参照するよう設定できました。