有没有办法在红宝石中检测操作系统?我正在开发一个将需要检测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. 损坏红宝石宝石系统
- 2. 红宝石宝石检测部署
- 3. 检测模块红宝石
- 4. 红宝石检测方法
- 5. 红宝石重写操作
- 6. 计划作业的Rails 3 - 加载系统红宝石不RVM红宝石
- 7. 在Clojure中检测操作系统
- 8. 红宝石操作与红宝石阻止ppoll
- 9. 模拟系统调用红宝石
- 10. 知道红宝石系统依赖项
- 11. 我在哪里可以得到一个红宝石1.8.6的CentOS操作系统
- 12. 在MacOS上安装jruby与Windows操作系统上的红宝石相比
- 13. jQuery - 检测操作系统和操作系统版本
- 14. 红宝石非宝石依赖关系
- 15. 红宝石state_machine宝石 - 测试validates_presence_of
- 16. 优化红宝石检测声明
- 17. 红宝石定义操作过程
- 18. 红宝石 - 字符串操作
- 19. Perl /红宝石单线阵列操作
- 20. 红宝石URI操纵
- 21. 红宝石系统调用CP:缺少目标文件操作后
- 22. 红宝石散列在红宝石
- 23. 集的效率操作VS在红宝石阵列操作
- 24. 如何设置RVM红宝石作为系统
- 25. 在红宝石1.8.7系统上如何安装回形针宝石?
- 26. 红宝石。 Mongoid。关系
- 27. 红宝石测试工作流程
- 28. C++检测操作系统版本
- 29. 是否有宏检测操作系统...?
- 30. 从Firefox扩展检测操作系统
你能不能给我们更多周围的细节*为什么*你需要这样做?通常,功能检测可能比全面的操作系统检测更有帮助。 – Pete 2012-08-02 19:05:27