Je ne comprends pas très bien votre question. Vous semblez être un mélange de deux complètement différents niveaux d'abstraction: Ruby est un langage de programmation, JRuby est un compilateur pour le langage de programmation Ruby. La question de savoir si votre programme est en cours d'exécution en Ruby ou en JRuby tout simplement ne fait pas sens: lorsqu'il est exécuté dans JRuby, il est exécuté en Ruby, parce que JRuby est une implémentation de Ruby.
C'est la même chose que de demander "comment puis-je savoir si je suis au volant d'une Ford vs une voiture?"
Si vous voulez savoir dans quel Ruby mise en œuvre, vous êtes en cours d'exécution, puis vous pouvez vérifier le global RUBY_ENGINE
constante. Il est censé universellement et identifier de manière unique le moteur vous sont en cours d'exécution, bien qu'il échoue malheureusement pour trois raisons:
- sur certains moteurs, il ne veut pas vous dire ce moteur, il est en cours d'exécution, par exemple sur YARV je m'attends
RUBY_ENGINE
être 'yarv'
, mais il est en fait 'ruby'
. Donc, il ne parvient pas à "identifier" partie.
- pire encore: à l'IRM, il est également
'ruby'
, ce qui signifie que non seulement il n'est pas de vous dire ce moteur vous sont en cours d'exécution sur, mais il y a aussi totalement différents moteurs de retourner la même valeur. OIE, il échoue également à "uniques" partie.
- et le dernier mais non le moindre,
RUBY_ENGINE
est assez nouveau, donc il n'est pas encore supporté par tous les moteurs, ce qui signifie qu'il ne parvient pas à l ' "universel" de la partie.
Encore, pour vous à quelque chose comme
if defined? RUBY_ENGINE && RUBY_ENGINE == 'jruby'
devrait fonctionner correctement.