Aar*_*nni 134
使用RUBY_PLATFORM常量,并可选择将其包装在模块中以使其更友好:
module OS
def OS.windows?
(/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
end
def OS.mac?
(/darwin/ =~ RUBY_PLATFORM) != nil
end
def OS.unix?
!OS.windows?
end
def OS.linux?
OS.unix? and not OS.mac?
end
def OS.jruby?
RUBY_ENGINE == 'jruby'
end
end
Run Code Online (Sandbox Code Playgroud)
它并不完美,但适用于我开发的平台,并且很容易扩展.
jtz*_*ero 22
(警告:阅读@Peter Wagenet的评论)我喜欢这个,大多数人使用rubygems,它的可靠性,是跨平台的
irb(main):001:0> Gem::Platform.local
=> #<Gem::Platform:0x151ea14 @cpu="x86", @os="mingw32", @version=nil>
irb(main):002:0> Gem::Platform.local.os
=> "mingw32"
Run Code Online (Sandbox Code Playgroud)
更新与"Update!Addition!Rubygems nowadays ..."结合使用以缓解何时Gem::Platform.local.os == 'java'
Vin*_*vic 17
或
irb(main):002:0> require 'rbconfig'
=> true
irb(main):003:0> Config::CONFIG["arch"]
=> "i686-linux"
Run Code Online (Sandbox Code Playgroud)
要么
irb(main):004:0> RUBY_PLATFORM
=> "i686-linux"
Run Code Online (Sandbox Code Playgroud)
我有第二个答案,为战斗添加更多选项. os rubygem和github页面有一个相关的项目列表.
require 'os' >> OS.windows? => true # or OS.doze? >> OS.bits => 32 >> OS.java? => true # if you're running in jruby. Also OS.jruby? >> OS.ruby_bin => "c:\ruby18\bin\ruby.exe" # or "/usr/local/bin/ruby" or what not >> OS.posix? => false # true for linux, os x, cygwin >> OS.mac? # or OS.osx? or OS.x? => false
OS gem 是最用户友好的库,提供诸如或OS.mac?之类的方法OS.posix?。它很小并且仅依赖于Ruby 标准库。
对于大多数 Ruby 安装中已经为您处理过的易于访问的内容,请尝试以下操作:
Gem.win_platform?#=> 例如。真、假(代码)Gem::Platform.local.os#=> 例如。“mingw32”、“java”、“linux”、“cygwin”、“aix”、“dalvik”(代码)这些以及我所知道的所有其他平台检查脚本都是基于解释这些底层变量:
RbConfig::CONFIG["host_os"]#=> 例如。“linux-gnu”(代码1、2)RbConfig::CONFIG["arch"]#=> 例如。“i686-linux”、“i386-linux-gnu”(编译 Ruby 解释器时作为参数传递)RUBY_PLATFORM#=> 例如。“i386-linux-gnu”、“darwin” -请注意,这在 JRuby 中返回“java”!(代码) 这些都是 Windows 变体:/cygwin|mswin|mingw|bccwin|wince|emx/RUBY_ENGINE#=> 例如。“红宝石”、“红宝石”其他库包括Platform,它可以很好地区分各种 Unix 平台。Platform::IMPL将返回,例如。:Linux,:freebsd,:netbsd,:hpux。sys-uname和sysinfo类似。utilinfo非常基础,在 Windows、Mac 和 Linux 之外的任何系统上都会失败。
如果您想要具有特定系统详细信息的更高级库,例如不同的 Linux 发行版,请参阅我的答案Detecting Linux distribution in Ruby。
此外,您可能会考虑功能检测,而不是尝试嗅探操作系统。
试试Launchy gem(gem install launchy):
require 'launchy'
Launchy::Application.new.host_os_family # => :windows, :darwin, :nix, or :cygwin
Run Code Online (Sandbox Code Playgroud)
更新!添加!如今,Rubygems 附带Gem.win_platform?.
为了清楚起见, Rubygems 存储库中的示例用法和此示例:
def self.ant_script
Gem.win_platform? ? 'ant.bat' : 'ant'
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32453 次 |
| 最近记录: |