Which ruby is running me?

So I have despaired of getting mutexes, threads and forks to coexist
peacably in Ruby. (As soon as the child process touches a mutex that
existed in the parent… Bad Things can happen.)

So Plan B is to

  • spin a thread
  • to mind a fork
  • that just execs
    a new instance of Ruby.

Now I tend to have several versions of Ruby lying around on my Box.

What is the One True Way of finding the path to the instance of ruby
that is currently executing this script?

GNU “Make” is pretty good about this, it has a $(MAKE) variable that
gives the exact path of make that is running.

John C. Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : [email protected]
New Zealand

On Apr 19, 2009, at 6:45 PM, John C. wrote:

What is the One True Way of finding the path to the instance of ruby
that is currently executing this script?

I’m pretty sure this always works:

$ ruby -r rbconfig -e ‘p File.join(Config::CONFIG.values_at(*%w[bindir
ruby_install_name])) + Config::CONFIG[“EXEEXT”]’
“/usr/local/bin/ruby”

James Edward G. II

On Mon, 20 Apr 2009, James G. wrote:

On Apr 19, 2009, at 6:45 PM, John C. wrote:

What is the One True Way of finding the path to the instance of ruby
that is currently executing this script?

I’m pretty sure this always works:

$ ruby -r rbconfig -e ‘p File.join(Config::CONFIG.values_at(*%w[bindir
ruby_install_name])) + Config::CONFIG[“EXEEXT”]’
“/usr/local/bin/ruby”

Thanks! Ooo… a tad ugly though… Ah, well, at least I wasn’t missing
the obvious for a change. :slight_smile:

John C. Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : [email protected]
New Zealand

On Apr 19, 2009, at 6:44 PM, John C. [email protected] wrote:

$ ruby -r rbconfig -e ‘p File.join(Config::CONFIG.values_at(*
%w[bindir ruby_install_name])) + Config::CONFIG[“EXEEXT”]’
“/usr/local/bin/ruby”

Thanks! Ooo… a tad ugly though… Ah, well, at least I wasn’t missing
the obvious for a change. :slight_smile:

require ‘rubygems’
Gem.ruby

$ ruby -rubygems -e ‘p Gem.ruby’
“/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby”
$ ruby18 -rubygems -e ‘p Gem.ruby’
“/usr/local/bin/ruby18”
$ ruby19 -e ‘p Gem.ruby’ # require ‘rubygems’ is automatic on 1.9
“/usr/local/bin/ruby19”