frum

バージョン管理Ruby開発環境CLIRust高速モダン2024注目

GitHub概要

TaKO8Ki/frum

A little bit fast and modern Ruby version manager written in Rust

スター646
ウォッチ8
フォーク14
作成日:2021年3月8日
言語:Rust
ライセンス:MIT License

トピックス

farmrbenvrubyrustversion-manager

スター履歴

TaKO8Ki/frum Star History
データ取得日時: 2025/7/20 02:56

言語バージョン管理ツール

frum(Fast Ruby Version Manager)

概要

frumは、Rustで実装された高速でモダンなRubyバージョン管理ツールです。2021年に登場した新しいツールで、rbenvより約7秒速く、shimを使わない直接的なアプローチにより圧倒的な速度を実現しています。インストーラーも内蔵しており、追加のツールなしでRubyのインストールから管理まで完結できます。

詳細

主な特徴

  • Rust実装: システムプログラミング言語による高速実行
  • 超高速: rbenvと比較して桁違いの速度改善
  • オールインワン: Rubyインストーラー内蔵で追加ツール不要
  • shimレス: プロキシを使わない直接実行
  • 依存関係なし: 単一のRust実行ファイルで完結
  • クロスプラットフォーム: Linux、macOS、Windowsサポート(WSL推奨)

技術的優位性

frumの速度優位性は以下の設計判断によるものです:

  • ネイティブバイナリ: Rustでコンパイルされた単一実行ファイル
  • 直接PATH操作: shimやラッパースクリプトを介さない
  • 効率的なキャッシュ: Rust の所有権システムによる最適化
  • 並列処理: Rustの安全な並行性を活用

2024年の評価

  • 「速度と機能のバランスを求めるならfrum」と評価
  • asdfが遅いと感じる場合の推奨代替手段
  • Rust製ツールの成熟により安定性も向上

メリット・デメリット

メリット

  • 圧倒的な速度: 起動とバージョン切り替えが瞬時
  • シンプルなインストール: Homebrewやwingetで一発インストール
  • 統合インストーラー: ruby-buildやruby-install不要
  • メモリ効率: Rust実装による最小メモリ使用
  • モダンな設計: 2020年代の開発環境に最適化
  • 設定の柔軟性: インストール時のオプション指定が容易

デメリット

  • 歴史が浅い: 2021年リリースでコミュニティがまだ小さい
  • 機能限定: プラグインシステムなどの拡張性なし
  • rbenv互換性不完全: すべてのrbenv機能をサポートしていない
  • ドキュメント不足: 公式ドキュメントがまだ発展途上
  • エッジケース: 特殊な環境での動作報告が少ない

参考ページ

書き方の例

インストール

# Homebrewでインストール(macOS/Linux推奨)
brew install frum

# Cargoでインストール(Rust環境がある場合)
cargo install frum

# wingetでインストール(Windows)
winget install TaKO8Ki.frum

# バイナリを直接ダウンロード
# GitHubのReleasesページから最新版をダウンロード
wget https://github.com/TaKO8Ki/frum/releases/latest/download/frum-{version}-{platform}.tar.gz
tar -xzf frum-{version}-{platform}.tar.gz
sudo mv frum /usr/local/bin/

シェル設定

# ~/.bashrcに追加
eval "$(frum init)"

# ~/.zshrcに追加
eval "$(frum init)"

# fishの場合(~/.config/fish/config.fish)
frum init | source

# PowerShellの場合(Windows)
Invoke-Expression (& frum init)

基本的な使い方

# 利用可能なRubyバージョンを表示
frum install --list
frum install -l

# 最新の安定版をインストール
frum install

# 特定バージョンをインストール
frum install 3.3.0
frum install 3.2.3

# インストール済みバージョンの確認
frum list
frum ls

# グローバルバージョンの設定
frum global 3.3.0

# 現在のバージョン確認
frum current
ruby --version

インストールオプション

# OpenSSLディレクトリを指定
frum install 3.3.0 --with-openssl-dir=/usr/local/opt/openssl

# jemallocを有効にしてインストール
frum install 3.3.0 --with-jemalloc

# 複数のオプションを指定
frum install 3.3.0 \
  --with-openssl-dir=/usr/local/opt/openssl \
  --with-readline-dir=/usr/local/opt/readline \
  --enable-shared

# デバッグシンボル付きでインストール
frum install 3.3.0 --enable-debug

プロジェクトごとの管理

# プロジェクトディレクトリで設定
cd /path/to/myproject

# ローカルバージョンを設定(.ruby-versionファイル作成)
frum local 3.3.0

# .ruby-versionファイルの確認
cat .ruby-version
# 3.3.0

# ディレクトリ移動時の自動切り替え
cd ..
frum current  # グローバルまたは親の設定
cd myproject
frum current  # 3.3.0に自動切り替え

バージョン管理

# 一時的なバージョン切り替え(現在のシェルのみ)
frum shell 3.2.3
ruby --version  # 3.2.3

# シェルを終了すると元に戻る
exit
ruby --version  # 元のバージョン

# 特定のコマンドを別バージョンで実行
frum exec 3.2.3 -- ruby script.rb
frum exec 3.2.3 -- bundle install

# アンインストール
frum uninstall 3.1.0

高度な使い方

# バージョンのエイリアス設定
frum alias create stable 3.3.0
frum global stable

# エイリアスの一覧
frum alias list

# エイリアスの削除
frum alias delete stable

# 環境変数の確認
echo $FRUM_DIR         # frumのインストールディレクトリ
echo $FRUM_RUBY_BUILD_MIRROR  # カスタムミラーURL(設定時)

# キャッシュのクリア
frum cache clear

Bundlerとの連携

# プロジェクトセットアップ
mkdir myapp && cd myapp
frum local 3.3.0

# Bundlerのインストール
gem install bundler

# Gemfileの作成と依存関係インストール
bundle init
bundle add rails
bundle install

# .ruby-versionをバージョン管理に含める
git add .ruby-version Gemfile Gemfile.lock
git commit -m "Setup Ruby 3.3.0 with dependencies"

CI/CD環境での使用

# GitHub Actionsでの例
# .github/workflows/ci.yml
- name: Install frum
  run: |
    curl -L https://github.com/TaKO8Ki/frum/releases/latest/download/frum-linux.tar.gz | tar xz
    sudo mv frum /usr/local/bin/
    
- name: Setup Ruby
  run: |
    frum install $(cat .ruby-version)
    frum global $(cat .ruby-version)
    
- name: Install dependencies
  run: bundle install

トラブルシューティング

# frumの動作確認
frum --version
which frum

# デバッグモードで実行
FRUM_DEBUG=1 frum install 3.3.0

# インストールログの確認
cat ~/.frum/install.log

# 設定のリセット
rm -rf ~/.frum
eval "$(frum init)"

# パスの確認
echo $PATH | grep frum

# 手動でパスを追加(一時的)
export PATH="$HOME/.frum/bin:$PATH"