Я не совсем понимаю ваш вопрос. Похоже, вы смешиваете два совершенно разных уровня абстракции: Ruby - это язык программирования, JRuby - это компилятор для языка программирования Ruby. Вопрос о том, работает ли ваша программа в Ruby или в JRuby, просто не имеет смысла: когда она выполняется в JRuby, она работает в Ruby, потому что JRuby является реализацией Ruby.
Это то же самое, что спросить: «Как я могу определить, еду ли я в Форде против автомобиля?»
Если вы хотите узнать, в какой реализации Ruby вы работаете, вы можете проверить глобальную константу RUBY_ENGINE
. Предполагается, что он универсально и однозначно идентифицирует двигатель, на котором вы работаете, хотя, к сожалению, он выходит из строя по трем причинам:
- на некоторых двигателях, он не говорит вам, на каком двигателе он работает, например, на YARV я бы ожидал, что
RUBY_ENGINE
будет 'yarv'
, но на самом деле это 'ruby'
. Таким образом, он терпит неудачу в части «идентификации».
- еще хуже: на МРТ он также также
'ruby'
, что означает, что он не только не сообщает вам, на каком двигателе вы работаете, но и полностью отличается двигатели, которые возвращают такое же значение. IOW, это также терпит неудачу в «уникальной» части.
- и, наконец, что не менее важно,
RUBY_ENGINE
является довольно новым, поэтому он еще не поддерживается всеми движками, что означает, что он выходит из строя в «универсальной» части.
Тем не менее, для ваших целей что-то вроде
if defined? RUBY_ENGINE && RUBY_ENGINE == 'jruby'
должно работать нормально.