Je ne comprends pas très bien votre question. Vous semblez mélanger deux niveaux d'abstraction complètement différents: Ruby est un langage de programmation, JRuby est un compilateur pour le langage de programmation Ruby. La question de savoir si votre programme s'exécute dans Ruby ou dans JRuby n'a pas de sens: quand il s'exécute dans JRuby, il est s'exécutant dans Ruby, car JRuby est une implémentation de Ruby. C'est la même chose que de demander «comment puis-je savoir si je conduis une Ford par rapport à une voiture?».
Si vous voulez savoir dans quelle implémentation Ruby vous êtes en cours d'exécution, vous pouvez vérifier la constante globale RUBY_ENGINE
. Il est censé identifier universellement et de manière unique le moteur que vous utilisez, même si elle échoue malheureusement pour trois raisons:
- sur certains moteurs, il ne vous dire ce que le moteur est en marche, par exemple sur YARV je m'attendrais
RUBY_ENGINE
à 'yarv'
, mais il est réellement 'ruby'
. Donc, il échoue à la partie "identifier".
- encore pire: l'IRM, il est aussi
'ruby'
, ce qui signifie que qui retournent la même valeur non seulement pas vous dire quel moteur ne vous utilisez, mais il aussi totalement différents moteurs. IOW, il échoue également à la partie "unique".
- et last but not least,
RUBY_ENGINE
est assez nouveau, donc il n'est pas encore supporté par tous les moteurs, ce qui signifie qu'il échoue à la partie "universelle".
encore, pour vos fins quelque chose comme
if defined? RUBY_ENGINE && RUBY_ENGINE == 'jruby'
devrait fonctionner correctement.
Oui. C'est "java" sous JRuby et l'OS sous-jacent ailleurs. – Chuck
En effet. Suffisant pour moi. Merci beaucoup! – pastorius
@Chuck: merci de vérifier. Je n'avais pas d'installation JRuby à portée de main. – JesperE