Xác định phiên bản ruby ​​từ bên trong Rails


81

Có cách nào để xác định phiên bản Ruby nào đang chạy từ bên trong Rails (trên web hoặc thông qua script/console) không? Tôi đã cài đặt Ruby 1.8.6 nhưng tôi cũng đã cài đặt Ruby Enterprise Edition 1.8.7-20090928 và muốn đảm bảo rằng nó đang sử dụng đúng cài đặt.

Câu trả lời:


164

Sử dụng Hằng số Cấp cao nhất

RUBY_VERSION

Các Hằng số Cấp cao hữu ích khác là

RUBY_PATCHLEVEL
RUBY_PLATFORM
RUBY_RELEASE_DATE

đây là một phiên irb:

irb(main):001:0> RUBY_VERSION
=> "1.8.7"

12

Hãy thử RUBY_VERSION không đổi. Tôi sử dụng điều này rộng rãi để xác định xem tôi đang chạy dưới 1.8 hay JRuby.

Ngoài ra, nếu bạn không ở chế độ sản xuất, bạn có thể kiểm tra nhanh bằng cách nhấn vào URL "/ rails / info / properties"


10

Ngoài hằng số RUBY_VERSION và bạn bè, bạn cũng có thể muốn xem Config :: CONFIG. Hàm băm này không chỉ chứa số phiên bản mà còn chứa rất nhiều thông tin thời gian chạy hữu ích khác, như đường dẫn đến tệp nhị phân, tên máy chủ, ...


cảm ơn bạn, tôi sử dụng 'put RbConfig.ruby' cho ruby ​​2.0 và rails 4.0 và nó trả về '/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby'
quatermain 18/09/13

9

Sử dụng RUBY_VERSIONnhư đã đề cập bởi những người khác.

Sau đó, bạn có thể sử dụng Gem::Versionđể so sánh chuỗi phiên bản:

require 'rubygems' # Only needed for ruby pre-1.9.0 but it's safe for later versions (evaluates to false).
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.9.0')
    extend DL::Importable                                    
else                                                         
    extend DL::Importer                                      
end                                                          

Tôi ước câu trả lời này ở đó - stackoverflow.com/q/11819525/322020 - nhưng tôi không thể di chuyển nó nên tôi yêu cầu bạn xóa câu trả lời này và đăng nó ở đó.
Nakilon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.