Exécuter ce dans IRB:
require 'rbconfig'
key_length = RbConfig::CONFIG.keys.max{ |a,b| a.length <=> b.length }.length
RbConfig::CONFIG.keys.sort_by{ |a| a.downcase }.each { |k| puts "%*s => %s" % [key_length, k, RbConfig::CONFIG[k]] }
Il sera une sortie "awesome print" liste de style de toutes les informations de configuration Ruby.
ALLOCA =>
AR => ar
arch => x86_64-darwin10.5.0
ARCH_FLAG =>
archdir => /Users/greg/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/x86_64-darwin10.5.0
ARCHFILE =>
AS => as
ASFLAGS =>
BASERUBY => ruby
bindir => /Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin
bindir
est le chemin de l'interpréteur Ruby en cours d'exécution. Au-dessus dans la liste est BASERUBY => ruby
.
RbConfig::CONFIG.values_at('bindir', 'BASERUBY').join('/')
=> "/Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin/ruby"
Contrôle mon travail:
greg-mbp-wireless:~ greg$ which ruby
/Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
Il y a beaucoup plus d'informations que ce donc il vaut la peine de courir le code que j'ajouté ci-dessus pour voir ce qui est disponible.
Cela ne fonctionne pas si le premier ligne de mon programme est "#!/usr/bin/env ruby" ... –
Je sais, aussi env n'est pas l'interprète. Ce n'est pas censé être très sérieux de toute façon. –
Je l'ai eu du smiley ;-) Y at-il vraiment aucune variable interne qui nous indique le chemin de l'exécutable exécuté? J'ai jeté un rapide coup d'œil à mon livre de cuisine Ruby mais je n'ai rien trouvé. –