Home

Awesome

The OS gem allows for some easy telling if you're on windows or not.

Install

bundle add os

Usage

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.dev_null
=> "NUL" # or "/dev/null" depending on which platform

>> OS.rss_bytes
=> 12300033 # number of rss bytes this process is using currently.  Basically "total in memory footprint" (doesn't include RAM used by the process that's in swap/page file)

>> OS.host_cpu
=> "x86_64"

>> puts OS.report
==> # a yaml report of helpful values
--- 
arch: x86_64-darwin10.6.0
target_os: darwin10.6.0
target_vendor: apple
target_cpu: x86_64
target: x86_64-apple-darwin10.6.0
host_os: darwin10.6.0
host_vendor: apple
host_cpu: i386
host: i386-apple-darwin10.6.0
RUBY_PLATFORM: x86_64-darwin10.6.0

>> OS.cpu_count  
=> 2 # number of cores, doesn't include hyper-threaded cores.

>> OS.open_file_command
=> "start" # or open on mac, or xdg-open on linux (all designed to open a file)

>> OS::Underlying.windows?
=> true # true for cygwin or MRI, whereas OS.windows? is false for cygwin

>> OS::Underlying.bsd?
=> true # true for OS X

>> OS::Underlying.docker?
=> false # true if running inside a Docker container

>> pp OS.parse_os_release
==> # A hash of details on the current Linux distro (or an exception if not Linux)
{:NAME=>"Ubuntu",
 :VERSION=>"18.04.4 LTS (Bionic Beaver)",
 :ID=>"ubuntu",
 :ID_LIKE=>"debian",
 :PRETTY_NAME=>"Ubuntu 18.04.4 LTS",
 :VERSION_ID=>"18.04",
 :HOME_URL=>"https://www.ubuntu.com/",
 :SUPPORT_URL=>"https://help.ubuntu.com/",
 :BUG_REPORT_URL=>"https://bugs.launchpad.net/ubuntu/",
 :PRIVACY_POLICY_URL=>
  "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy",
 :VERSION_CODENAME=>"bionic",
 :UBUNTU_CODENAME=>"bionic"}

If there are any other features you'd like, let me know, I'll do what I can to add them :)

http://github.com/rdp/os for feedback et al

Alternatives

rubygems:

Gem::Platform.local
Gem.ruby

The reason Gem::Platform.local felt wrong to me is that it treated cygwin as windows--which for most build environments, is wrong. Hence the creation of this gem.

the facets gem (has a class similar to rubygems, above)

require 'facets/platform'
Platform.local

the "platform" gem, itself (a different gem)

FFI::Platform::OS

Contributing

Develop locally:

bundle install
bundle exec guard

License

License: MIT (see LICENSE file)