Tôi không hiểu câu hỏi của bạn. Bạn dường như đang trộn hai mức trừu tượng hoàn toàn khác nhau: Ruby là một ngôn ngữ lập trình, JRuby là trình biên dịch cho ngôn ngữ lập trình Ruby. Các câu hỏi cho dù chương trình của bạn đang chạy trong Ruby hoặc trong JRuby chỉ đơn giản là không có ý nghĩa: khi nó đang chạy trong JRuby, nó là chạy trong Ruby, bởi vì JRuby là một thực hiện của Ruby.
Cũng giống như yêu cầu "làm cách nào tôi có thể biết liệu tôi có đang lái xe trong Ford so với xe hơi không?"
Nếu bạn muốn biết những gì bạn đang triển khai, bạn có thể kiểm tra hằng số RUBY_ENGINE
toàn cầu. Nó được cho là phổ biến và xác định duy nhất động cơ bạn đang chạy trên, mặc dù nó không may thất bại vì ba lý do:
- trên một số công cụ, nó không làm cho bạn biết những gì động cơ nó đang chạy trên, ví dụ trên YARV tôi mong đợi
RUBY_ENGINE
là 'yarv'
, nhưng thực tế là 'ruby'
. Vì vậy, nó không thành công ở phần "xác định".
- thậm chí tệ hơn: trên MRI, nó là cũng
'ruby'
, có nghĩa là không chỉ có khả năng không cho bạn biết những gì động cơ bạn đang chạy trên, nhưng cũng hoàn toàn động cơ khác nhau mà trả lại cùng một giá trị. IOW, nó cũng thất bại ở phần "duy nhất".
- và cuối cùng nhưng không kém phần quan trọng,
RUBY_ENGINE
là khá mới, do đó, nó chưa được hỗ trợ bởi tất cả các công cụ, có nghĩa là nó không thành công ở phần "phổ quát".
Tuy nhiên, mục đích của bạn một cái gì đó giống như
if defined? RUBY_ENGINE && RUBY_ENGINE == 'jruby'
nên hoạt động tốt.
Nguồn
2009-08-29 12:14:31
Đúng. Đó là "java" dưới JRuby và hệ điều hành cơ bản ở nơi khác. – Chuck
Thật vậy. Đủ tôt cho tôi. Cảm ơn rất nhiều! – pastorius
@Chuck: cảm ơn bạn đã xác minh. Tôi không có một cài đặt JRuby tiện dụng. – JesperE