Can a Ruby program determine whether it's running on a 32-bit or 64-bit system?

I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".

Or maybe this is a bug -- repaved machine, installed Fedora Core 9,
downloaded and built a vanilla Ruby 1.8.6 -- but I see this on another
32-bit Linux box as well (this one's a virtual host, but `cat /proc/
cpuinfo`
suggests it's 32-bit)

If anyone's wondering, this is related to the Komodo debugger. The
ruby-debug-base component is not 32/64-bit universal, so I need to
put the 32-bit binary in one dir, the 64-bit one in another, and
direct the client to the right spot.

Thanks,
Eric Promislow

Well, i?86 means it is 32bit.
64-bit x86 system would have 'x86_64-linux'.

Jan

···

On Wednesday 03 September 2008 02:39:37 Eric Promislow wrote:

I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".

Eric Promislow wrote:

Can a Ruby program determine whether
it's running on a 32-bit or 64-bit system?

Yes. Look at the result of calling the 'size' method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.

0.size

=> 4

···

--
Posted via http://www.ruby-forum.com/\.

I can't go by RUBY_PLATFORM -- I'm setting up a new 32-bit Linux box,
and RUBY_PLATFORM is set to "i686-linux".

Pack has a support for native size :

RUBY_PLATFORM

=> "i386-freebsd6"

[ -1 ].pack('l!').length

=> 4

While...

RUBY_PLATFORM

=> "amd64-freebsd7"

[ -1 ].pack('l!').length

=> 8

(From the Pickaxe : 'Any of the directives "sSiIlL" may be followed by
an underscore (_) or bang (!) to use the underlying platform's native
size for the specified type')

Fred

···

Le 3 septembre 2008 à 02:42, Eric Promislow a écrit :
--
When I was a child I had a fever. My hands felt just like two balloons.
                   Now I got that feeling once again.
I can't explain, you would not understand. This is not how I am.
I have become comfortably numb. (Pink Floyd, Comfortably Numb)

I got 4 on 64bit Windows Server. That doesn't mean that it depends if it was
built on 64bit or 32bit, I mean ruby core.

···

2008/9/2 Suraj Kurapati <snk@gna.org>

Eric Promislow wrote:
> Can a Ruby program determine whether
> it's running on a 32-bit or 64-bit system?

Yes. Look at the result of calling the 'size' method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.

>> 0.size
=> 4
--
Posted via http://www.ruby-forum.com/\.

--
Pablo Q.

Suraj Kurapati wrote:

Eric Promislow wrote:

Can a Ruby program determine whether
it's running on a 32-bit or 64-bit system?

Yes. Look at the result of calling the 'size' method on a Fixnum; it
will be 4 on 32-bit machines, and 8 on 64-bit machines.

0.size

=> 4

On my 32 bit machine I get this:
p 0.size
=> 8

p [ -1 ].pack('l!').length
=> 4

I am not sure why, but there it is, fyi.

···

--
Posted via http://www.ruby-forum.com/\.