たごもりすメモ

コードとかその他の話とか。

実行中のRubyプログラム中で自分自身を動かしているrubyのパスを取得する

何が嬉しいんだそれって言われると、うーん、rbenv/rvmなんかの影響を無理矢理外すために環境変数とかをいじった上で自分自身を起動しなおしたかったからんだけど、あっやめて石を投げないで、そんなマイナーケース知るかって、あっ、

RbConfig モジュール

要するに RbConfig.ruby を呼べばすべて解決!
http://docs.ruby-lang.org/ja/2.0.0/class/RbConfig.html#S_RUBY

require 'rbconfig'
RbConfig.ruby #=> "/Users/tagomoris/.rbenv/versions/jruby-1.7.8/bin/jruby" # とか

@KitaitiMakoto さんに教えてもらいました。ありがとうございます!

ボツ案

psして結果をパースする

したくない。あとjrubyだとプロセス名自体は java になってて色々めんどくさい。却下。

/proc/$pid/exe を見る

LinuxならいけるけどOSXとかWindowsとかでそれぞれ方法を見付けないといけないのでめんどくさい。却下。

実行ファイル(つまり自分自身)のshebangを見る

gemでインストールされてればrubyのパスがそこに書いてあるから __FILE__ をopenして1行目を読めばどのrubyで起動されているかがわかってすべてこれで解決っていうか open(__FILE__) ってスゲーキモくてカッコいくぁwせdrftgyふじこlp