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 Carter Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : john.carter@tait.co.nz
New Zealand

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 Gray II

···

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

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

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

John Carter Phone : (64)(3) 358 6639
Tait Electronics Fax : (64)(3) 359 4632
PO Box 1645 Christchurch Email : john.carter@tait.co.nz
New Zealand

···

On Mon, 20 Apr 2009, James Gray wrote:

On Apr 19, 2009, at 6:45 PM, John Carter 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"

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"

···

On Apr 19, 2009, at 6:44 PM, John Carter <john.carter@tait.co.nz> wrote:

On Mon, 20 Apr 2009, James Gray wrote:

On Apr 19, 2009, at 6:45 PM, John Carter 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: