有沒有辦法在紅寶石中檢測操作系統?我正在開發一個將需要檢測MAC與WINDOWS的sketchup工具。在紅寶石中檢測操作系統
回答
您可以使用
puts RUBY_PLATFORM
irb(main):001:0> RUBY_PLATFORM
=> "i686-linux"
但@Pete是正確的。
只是想讓人們知道,如果你在64位窗口上運行32位ruby,RUBY_PLATFORM會告訴你體系結構是32位的。 – max 2014-11-26 06:06:43
當使用JRuby時,無論操作系統如何,RUBY_PLATFORM都會返回「java」。 – robertodecurnex 2014-12-03 18:53:30
這足以用於檢測您是否在OSX上。 – Mosselman 2017-02-27 15:47:23
您可以檢查RUBY_PLATFORM常量,但在某些情況下(例如運行JRuby時),這被稱爲不可靠。其他選項包括在POSIX系統上捕獲uname -a
命令的輸出或使用檢測寶石,如sys-uname。
這是我最近見過的最好的一個。它來自硒。我認爲這是最好的原因是它使用rbconfig host_os字段,它具有在MRI和JRuby上工作的優勢。 RUBY_PLATFORM將在JRuby上說'java',而不管它運行在哪個主機os上。您將需要適度調整這個方法:
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
不錯,但我認爲你應該更新你的答案來記錄「os」寶石,它已經解決了您提到的JRuby問題,並獲得了我們您的代碼庫的檢測代碼。 請參閱:http://stackoverflow.com/a/20579735/109561 – Gerry 2015-01-22 22:45:40
這也是一個很好的方法,如果你不能安裝一個系統的寶石。就像我目前正在處理的情況一樣,我正在構建一個低級系統腳本,該腳本無法在需要知道os版本的位置安裝任何內容。 <3 – 2017-10-19 08:07:58
可以使用os
寶石:
gem install os
然後
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.
感謝您的發現。真棒回答。 :)可悲的是,你有兩年的投票時間趕上。 – Gerry 2015-01-22 22:41:55
- 1. 在MAC操作系統中安裝紅寶石linalg失敗
- 2. 損壞紅寶石寶石系統
- 3. 紅寶石寶石檢測部署
- 4. 紅寶石沒有檢測到寶石
- 5. 如何告訴系統將紅寶石構建紅寶石之一視爲系統紅寶石?
- 6. 如何在系統()中替換寶石內紅寶石gem
- 7. 檢測模塊紅寶石
- 8. 紅寶石檢測方法
- 9. 紅寶石:數組操作
- 10. 紅寶石陣列,[]操作
- 11. 紅寶石文件操作
- 12. 紅寶石重寫操作
- 13. 計劃作業的Rails 3 - 加載系統紅寶石不RVM紅寶石
- 14. 檢測操作系統
- 15. 在Clojure中檢測操作系統
- 16. 紅寶石操作與紅寶石阻止ppoll
- 17. 如何更換系統紅寶石?
- 18. 反向與紅寶石系統
- 19. 模擬系統調用紅寶石
- 20. 知道紅寶石系統依賴項
- 21. jQuery - 檢測操作系統和操作系統版本
- 22. 在MacOS上安裝jruby與Windows操作系統上的紅寶石相比
- 23. 我在哪裏可以得到一個紅寶石1.8.6的CentOS操作系統
- 24. 紅寶石非寶石依賴關係
- 25. 從紅寶石檢測和處理NonLocalExit
- 26. 優化紅寶石檢測聲明
- 27. 紅寶石枚舉反向檢測
- 28. 紅寶石upcase檢測數量字符
- 29. 紅寶石陣列更新操作
- 30. 紅寶石操作和方法調用
你能不能給我們更多周圍的細節*爲什麼*你需要這樣做?通常,功能檢測可能比全面的操作系統檢測更有幫助。 – Pete 2012-08-02 19:05:27