From: Walton Hoops on
On 1/14/2010 4:12 PM, Iñaki Baz Castillo wrote:
> Hi, is there a reliable way under Ruby to know the OS architecture (32 or 64
> bits)?
>
> I've just found RUBY_PLATFORM constant which returns "x86_64-linux" under 64
> bits, however it doesn't send very reliable for me.
>
> I need a way working under Linux and BSD. Thanks for any suggestion.
>
>

I can't vouch for how accurate it is, but an OS gem was recently
announced on this list.
gem install os

irb(main):001:0> require 'os'
=> true
irb(main):002:0> OS.bits
=> 64
irb(main):004:0> OS.posix?
=> true
irb(main):005:0>


From: Walton Hoops on
On 1/15/2010 9:36 AM, Walton Hoops wrote:
> On 1/14/2010 4:12 PM, Iñaki Baz Castillo wrote:
>> Hi, is there a reliable way under Ruby to know the OS architecture
>> (32 or 64
>> bits)?
>>
>> I've just found RUBY_PLATFORM constant which returns "x86_64-linux"
>> under 64
>> bits, however it doesn't send very reliable for me.
>>
>> I need a way working under Linux and BSD. Thanks for any suggestion.
>>
>
> I can't vouch for how accurate it is, but an OS gem was recently
> announced on this list.
> gem install os
>
> irb(main):001:0> require 'os'
> => true
> irb(main):002:0> OS.bits
> => 64
> irb(main):004:0> OS.posix?
> => true
> irb(main):005:0>
>
>
Hmm.. it does not appear to deal with 32-bit ruby running on a 64 bit
system though.
On my Windows 7 x64 (with 32-bit ruby):
irb(main):005:0> OS.bits
=> 32
irb(main):006:0> 1.size
=> 4
irb(main):007:0>

From: Iñaki Baz Castillo on
El Viernes, 15 de Enero de 2010, Walton Hoops escribió:
> On 1/15/2010 9:36 AM, Walton Hoops wrote:
> > On 1/14/2010 4:12 PM, Iñaki Baz Castillo wrote:
> >> Hi, is there a reliable way under Ruby to know the OS architecture
> >> (32 or 64
> >> bits)?
> >>
> >> I've just found RUBY_PLATFORM constant which returns "x86_64-linux"
> >> under 64
> >> bits, however it doesn't send very reliable for me.
> >>
> >> I need a way working under Linux and BSD. Thanks for any suggestion.
> >
> > I can't vouch for how accurate it is, but an OS gem was recently
> > announced on this list.
> > gem install os
> >
> > irb(main):001:0> require 'os'
> > => true
> > irb(main):002:0> OS.bits
> > => 64
> > irb(main):004:0> OS.posix?
> > => true
> > irb(main):005:0>
>
> Hmm.. it does not appear to deal with 32-bit ruby running on a 64 bit
> system though.
> On my Windows 7 x64 (with 32-bit ruby):
> irb(main):005:0> OS.bits
> => 32
> irb(main):006:0> 1.size
> => 4
> irb(main):007:0>

Interesting, I'll take a look to its implementation. However in my case I will
never run 32 bits Ruby over a 64 bits SO.


--
Iñaki Baz Castillo <ibc(a)aliax.net>

From: Iñaki Baz Castillo on
El Viernes, 15 de Enero de 2010, Walton Hoops escribió:
> On 1/15/2010 9:36 AM, Walton Hoops wrote:
> > On 1/14/2010 4:12 PM, Iñaki Baz Castillo wrote:
> >> Hi, is there a reliable way under Ruby to know the OS architecture
> >> (32 or 64
> >> bits)?
> >>
> >> I've just found RUBY_PLATFORM constant which returns "x86_64-linux"
> >> under 64
> >> bits, however it doesn't send very reliable for me.
> >>
> >> I need a way working under Linux and BSD. Thanks for any suggestion.
> >
> > I can't vouch for how accurate it is, but an OS gem was recently
> > announced on this list.
> > gem install os
> >
> > irb(main):001:0> require 'os'
> > => true
> > irb(main):002:0> OS.bits
> > => 64
> > irb(main):004:0> OS.posix?
> > => true
> > irb(main):005:0>
>
> Hmm.. it does not appear to deal with 32-bit ruby running on a 64 bit
> system though.
> On my Windows 7 x64 (with 32-bit ruby):
> irb(main):005:0> OS.bits
> => 32
> irb(main):006:0> 1.size
> => 4
> irb(main):007:0>

Note that to know the bits it uses "rbconfig" gem, and them:

def self.bits
@bits ||= begin
require 'rbconfig'
host_os = RbConfig::CONFIG['host_os']
if host_os =~ /32/
32
else
if host_os =~ /64/
64
else # cygwin...
if (1<<32).class == Fixnum
64
else
32
end
end
end
end
end


In my server RbConfig::CONFIG['host_os'] = "linux-gnu" so finally it ends
doing:

if (1<<32).class == Fixnum
64
else
32
end

Which is basically the same as doing

if 1.size == 8
64
else
32
end



--
Iñaki Baz Castillo <ibc(a)aliax.net>

From: Iñaki Baz Castillo on
El Viernes, 15 de Enero de 2010, Iñaki Baz Castillo escribió:

> Note that to know the bits it uses "rbconfig" gem, and them:

Well, "rbconfig" is not a gem but a Ruby built in library.



> In my server RbConfig::CONFIG['host_os'] = "linux-gnu" so finally it ends
> doing:
>
> if (1<<32).class == Fixnum
> 64
> else
> 32
> end
>
> Which is basically the same as doing
>
> if 1.size == 8
> 64
> else
> 32
> end
>


Definitively I don't like "os" gem at all. It could use
RbConfig::CONFIG['host_cpu'] rather than the not reliable
RbConfig::CONFIG['host_os']:


a) 32 bits host:

RbConfig::CONFIG['host_os'] => "linux-gnu"
RbConfig::CONFIG['host_cpu'] => "i486"

b) 64 bits host:

RbConfig::CONFIG['host_os'] => "linux-gnu"
RbConfig::CONFIG['host_cpu'] => "x86_64"


--
Iñaki Baz Castillo <ibc(a)aliax.net>