Có cách nào để phát hiện hệ điều hành bằng ruby không? Tôi đang làm việc về phát triển một công cụ sketchup mà sẽ cần phải phát hiện MAC vs WINDOWS.Phát hiện hệ điều hành trong Ruby
Trả lời
Bạn có thể sử dụng
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
Nhưng @Pete là đúng.
chỉ muốn cho mọi người biết rằng nếu bạn đang chạy một ruby 32 bit trên một cửa sổ 64 bit, RUBY_PLATFORM sẽ cho bạn thấy kiến trúc đó là 32 bit. – max
RUBY_PLATFORM sẽ trả lại "java" khi sử dụng JRuby, bất kể hệ điều hành. – robertodecurnex
Điều này đủ cho một cái gì đó như phát hiện xem bạn có đang sử dụng OSX hay không. – Mosselman
Bạn có thể kiểm tra hằng số RUBY_PLATFORM, nhưng điều này được biết là không đáng tin cậy trong một số trường hợp nhất định, chẳng hạn như khi chạy JRuby. Các tùy chọn khác bao gồm chụp đầu ra của lệnh uname -a
trên hệ thống POSIX hoặc bằng cách sử dụng đá quý phát hiện chẳng hạn như sys-uname.
Đây là cách tốt nhất tôi đã xem gần đây. Nó là từ selen. Lý do tôi nghĩ rằng nó là tốt nhất là nó sử dụng rbconfig host_os lĩnh vực đó có lợi thế làm việc trên MRI và JRuby. RUBY_PLATFORM sẽ nói 'java' trên JRuby bất kể máy chủ lưu trữ nào đang chạy trên đó. Bạn sẽ cần phải nhẹ nhàng tinh chỉnh phương pháp này:
require 'rbconfig'
def os
@os ||= (
host_os = RbConfig::CONFIG['host_os']
case host_os
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
:windows
when /darwin|mac os/
:macosx
when /linux/
:linux
when /solaris|bsd/
:unix
else
raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
end
)
end
Tốt, nhưng tôi nghĩ bạn nên cập nhật câu trả lời của mình để ghi chú đá quý "os", đã giải quyết vấn đề JRuby mà bạn đã đề cập và nhận mã phát hiện này của cơ sở mã của bạn. Xem: http://stackoverflow.com/a/20579735/109561 – Gerry
Đây cũng là một phương pháp tuyệt vời nếu bạn không thể cài đặt đá quý vào hệ thống. Giống như trong trường hợp tôi hiện đang làm việc, nơi tôi đang xây dựng một kịch bản hệ thống cấp thấp mà không có quyền truy cập để cài đặt bất cứ điều gì tại thời điểm mà tôi cần phải biết phiên bản os. <3 –
Bạn có thể sử dụng os
đá quý:
gem install os
Và sau đó
require 'os'
OS.linux? #=> true or false
OS.windows? #=> true or false
OS.java? #=> true or false
OS.bsd? #=> true or false
OS.mac? #=> true or false
# and so on.
Cảm ơn vì đã tìm ra điều đó. Câu trả lời tuyệt vời. :) Đáng buồn thay, bạn có hai năm bỏ phiếu để bắt kịp. – Gerry
Bạn có thể cung cấp cho chúng tôi biết thêm chi tiết xung quanh * tại sao * bạn cần phải làm điều này? Thường thì tính năng phát hiện có thể hữu ích hơn so với phát hiện hệ điều hành chăn. – Pete