当前位置:  开发笔记 > 后端 > 正文

如何找到运行Ruby程序的操作系统?

如何解决《如何找到运行Ruby程序的操作系统?》经验,为你挑选了5个好方法。

我希望我的Ruby程序在Mac上执行与在Windows上不同的操作.如何找出我的程序运行的系统?



1> Aaron Hinni..:

使用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

它并不完美,但适用于我开发的平台,并且很容易扩展.


一个不起作用的情况是你使用jruby.
对于jruby,你最好使用`RbConfig :: CONFIG ["host_os"]来获得你的操作系统.
有没有像这样的东西打包成宝石,可以使用,而不是复制/粘贴等?如果是的话,在哪里?:)

2> jtzero..:

(警告:阅读@Peter Wagenet的评论)我喜欢这个,大多数人使用rubygems,它的可靠性,是跨平台的

irb(main):001:0> Gem::Platform.local
=> #
irb(main):002:0> Gem::Platform.local.os
=> "mingw32"

更新与"Update!Addition!Rubygems nowadays ..."结合使用以缓解何时Gem::Platform.local.os == 'java'


在jruby上它只报告"java",所以如果你希望任何人都运行jruby是不够的.

3> Vinko Vrsalo..:

irb(main):002:0> require 'rbconfig'
=> true
irb(main):003:0> Config::CONFIG["arch"]
=> "i686-linux"

要么

irb(main):004:0> RUBY_PLATFORM
=> "i686-linux"


"使用RbConfig代替过时和弃用的Config"=>```RbConfig :: CONFIG ["arch"]```

4> jtzero..:

我有第二个答案,为战斗添加更多选项. os ruby​​gem和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



5> Ryan McGeary..:

试试Launchy gem(gem install launchy):

require 'launchy'
Launchy::Application.new.host_os_family # => :windows, :darwin, :nix, or :cygwin 

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有