Detect if windows or linux


#1

Hi,
what’ s the best way to detect if I’ m on a windows or linux machine. I
don’ t want to check that by handling an exception. Is there a function
in the standard libraries.
Thanks,
Alex.


#2

Alexander F. asked:

Hi,
what’ s the best way to detect if I’ m on a windows or linux machine. I
don’ t want to check that by handling an exception. Is there a function in
the standard libraries.

Ruby defines these constants, among others:
RUBY_PLATFORM
RUBY_RELEASE_DATE
RUBY_VERSION

C:>ruby -e “p PLATFORM”
“i386-mswin32”

Cheers,
Dave


#3

Alexander F. wrote:

Hi,
what’ s the best way to detect if I’ m on a windows or linux machine. I don’ t want to check that by handling an exception. Is there a function in the standard libraries.
Thanks,
Alex.

There is the constant RUBY_PLATFORM, on my WinXP-box it contains the
string ‘i386-mswin32’, my debian has ‘i386-linux’.


#4

Alexander F. wrote:

Hi,
what’ s the best way to detect if I’ m on a windows or linux machine.

As a quick and nasty hack for domestic use, consider one of these two
(depending on taste):

NIX = File.exist?(’/dev/null’) and !File.exist?(’/NUL’)
p [:NIX, NIX, RUBY_PLATFORM] # [:NIX, false, “i586-bccwin32”]

-OR-

WIN = File.exist?(’/NUL’) and !File.exist?(’/dev/null’)
p [:WIN, WIN, RUBY_PLATFORM] # [:WIN, true, “i586-bccwin32”]

Maybe both (for some solidity), adding:

NIX != WIN or raise ‘Unrecognised platform’

?

daz