🦔

[Feature #6648] 実行中の ruby のコマンドラインフラグを取得するAPIを追加するチケット

2024/10/01に公開

[Feature #6648] Provide a standard API for retrieving all command-line flags passed to Ruby

  • 実行中の ruby に渡されたすべてのコマンドラインフラグを取得するための API を追加する提案
  • モチベーションとしては実行した ruby と同じオプションでサブプロセスを実行するときに利用したいみたいですね
  • JRuby はコマンドラインオプションを取得する仕組みはあるけど Java の API を呼び出す必要があったり Rubinius も独自 API を提供しているが VM レベルのフラグが含まれているかどうかはわからないみたいですね
  • 12年前のチケットなんですが今年の4月頃からまた議論が活発化しています
    • https://bugs.ruby-lang.org/issues/6648#note-10 このあたり
    • 異なるバージョンの .ruby-version があればそれを参照してそのバージョンのスクリプトを再実行する、みたいなことがしたかったらしい
  • イメージこんな感じ?
RbConfig.ruby        # 実行した ruby のパス
RbConfig.ruby_args   # ruby のコマンドライン引数
RbConfig.script      # 実行中のスクリプト $0 と同等
RbConfig.script_args # スクリプトの引数 ARGV と同等

# こんな感じでサブプロセスを実行する想定
exec(RbConfig.ruby, *RbConfig.ruby_args, *RbConfig.script, *RbConfig.script_args)
GitHubで編集を提案

Discussion