# One-liner for checking platform?

**URL:** <https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313>\
**Category:** Ruby\
**Created:** [November 26, 2007, 7:21pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313 "2007-11-26T19:21:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 7:21pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/1 "2007-11-26T19:21:48Z")

</div>

I want to release some code without encouraging an OS X monoculture:

[![](http://www.tbray.org/ongoing/When/200x/2007/11/12/IMGP7123.png) ](http://www.tbray.org/ongoing/When/200x/2007/11/12/IMGP7123.png)

…but I have some nifty but not _absolutely_ essential functionality  
which currently I only know how to do on OS X. Is there a dependable  
“if platform?(apple)” I can use?

Actually, now that I put it that way, I’m going to write one. But does  
anyone know the quickest, cleanest way?

class Kernel  
def os\_x?  
# ???  
end  
end

The gems discussion recently had somebody who specified the wrong  
string indicating Windows for their platform - I wasn’t sure if that  
was the poster’s mistake or a weird overabundance of useful  
platform-indicative strings in gems or Ruby, but I want to avoid that  
same pitfall.

–  
Giles B.

Podcast: [http://hollywoodgrit.blogspot.com](http://hollywoodgrit.blogspot.com)  
Blog: [http://gilesbowkett.blogspot.com](http://gilesbowkett.blogspot.com)  
Portfolio: [http://www.gilesgoatboy.org](http://www.gilesgoatboy.org)  
Tumblelog: [http://giles.tumblr.com](http://giles.tumblr.com)

---

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 7:26pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/2 "2007-11-26T19:26:50Z")

</div>

Use the constant RUBY\_PLATFORM

On my platform it is

# =\> “i686-linux”

on windows, its different

on apple i guess too 🙂

if you dont need a one liner you can use this

def which\_platform?  
$RUBY\_PLATFORM ||=  
case RUBY\_PLATFORM.downcase  
when /linux|bsd|solaris|hpux|powerpc-darwin/  
:unix  
when /mswin32|mingw32|bccwin32/  
:windows  
when /cygwin/  
:cygwin  
when /java/  
:java  
else  
:other  
end  
end

---

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 7:27pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/3 "2007-11-26T19:27:39Z")

</div>

On Tue, Nov 27, 2007 at 03:20:54AM +0900, Giles B. wrote:

> Actually, now that I put it that way, I’m going to write one. But does  
> anyone know the quickest, cleanest way?
> 
> class Kernel  
> def os\_x?  
> # ???  
> end  
> end

[http://rubyforge.org/projects/platform/](http://rubyforge.org/projects/platform/)

marcel

---

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 8:32pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/4 "2007-11-26T20:32:44Z")

</div>

> Hi Giles, my bet is
> 
> RUBY\_PLATFORM.include?(‘darwin’)
> 
> That’s why include?(‘win’) is not a good test for Windows.

Also cygwin.

–  
Giles B.

Podcast: [http://hollywoodgrit.blogspot.com](http://hollywoodgrit.blogspot.com)  
Blog: [http://gilesbowkett.blogspot.com](http://gilesbowkett.blogspot.com)  
Portfolio: [http://www.gilesgoatboy.org](http://www.gilesgoatboy.org)  
Tumblelog: [http://giles.tumblr.com](http://giles.tumblr.com)

---

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 7:34pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/5 "2007-11-26T19:34:08Z")

</div>

On Nov 26, 2007, at 7:20 PM, Giles B. wrote:

> Actually, now that I put it that way, I’m going to write one. But does  
> anyone know the quickest, cleanest way?
> 
> class Kernel  
> def os\_x?
> 
> # ???
> 
> end  
> end

Hi Giles, my bet is

RUBY\_PLATFORM.include?(‘darwin’)

That’s why include?(‘win’) is not a good test for Windows.

– fxn

---

<div class="post-metadata">

**Author:** ![Giles\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/848f3c/32.png) [@Giles\_B](https://www.ruby-forum.com/u/Giles_B)\
**Post date:** [November 26, 2007, 8:34pm UTC](https://www.ruby-forum.com/t/one-liner-for-checking-platform/121313/6 "2007-11-26T20:34:30Z")

</div>

> [http://rubyforge.org/projects/platform/](http://rubyforge.org/projects/platform/)

Cheers Marcel!

–  
Giles B.

Podcast: [http://hollywoodgrit.blogspot.com](http://hollywoodgrit.blogspot.com)  
Blog: [http://gilesbowkett.blogspot.com](http://gilesbowkett.blogspot.com)  
Portfolio: [http://www.gilesgoatboy.org](http://www.gilesgoatboy.org)  
Tumblelog: [http://giles.tumblr.com](http://giles.tumblr.com)
