### Home Classes Methods

### In Files

- lib/facets/platform.rb

### Parent

Object

### Methods

- ::local
- ::match
- ::new
- ::supported
- #==
- #===
- #=~
- #big_endian?
- #bsd?
- #byte_order
- #byteorder
- #cardinal?
- #enterprise?
- #host_os
- #inspect
- #interpreter
- #iron_ruby?
- #ironruby?
- #java?
- #jruby?
- #linux?
- #little_endian?
- #mac?
- #mri?
- #official_ruby?
- #parrot?
- #perl?
- #posix?
- #rbx?
- #ree?
- #rubinius?
- #ruby?
- #solaris?
- #symbian?
- #to_a
- #to_s
- #windows?

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Random
- Random::ArrayExtensions
- Random::HashExtensions
- Random::IntegerExtensions
- Random::NumericExtensions
- Random::RangeExtensions
- Random::StringExtensions
- Random::StringExtensions::Self
- FileUtils
- FileUtils::DryRun
- FileUtils::NoWrite
- FileUtils::Verbose
- Digest
- Digest::Class
- Digest::Instance
- Multiton
- Multiton::Inclusive
- Multiton::MetaMethods
- URI
- URI::Hash
- URI::Kernel
- Argvector
- Argvector
- ERB
- ERB::OpenTemplate
- Enumerable
- Enumerable::Arguments
- GetoptLong
- GetoptLong::DSL
- Memoizable
- Memoizable::Copy
- Numeric
- Numeric::Multipliers
- Object
- Object::ArgVector
- Timer
- Timer::Dummy
- Array
- BasicObject
- CGI
- Cloneable
- Continuation
- Date
- DateTime
- Equitable
- File
- Find
- Hash
- Instantiable
- Integer
- Interval
- Kernel
- Math
- Module
- Net
- NilClass
- NullClass
- OpEsc
- OpenStruct
- Pathname
- Platform
- Range
- RbConfig
- Set
- Shellwords
- String
- StringScanner
- Time
- Tuple
- YAML
- Zlib

No matching classes.

# Platform

Platform class

Original version from RubyGems, Copyright (c) 2007 Eric Hodel

### Constants

CURRENT

  A platform-specific gem that is built for the packaging ruby's platform. This will be replaced with Gem::Platform::local.

RUBY

  A pure-ruby gem that may use Gem::Specification#extensions to build binary files.

### Attributes

cpu[RW]
os[RW]
version[RW]

### Public Class Methods

local() click to toggle source

    # File lib/facets/platform.rb, line 58
    def self.local
      arch = Config::CONFIG['arch']
      arch = "#{arch}_60" if arch =~ /mswin32$/
      @local ||= new(arch)
    end

match(platform) click to toggle source

    # File lib/facets/platform.rb, line 65
    def self.match(platform)
      supported.any? do |local_platform|
        platform.nil? or local_platform == platform or
          (local_platform != Platform::RUBY and local_platform =~ platform)
      end
    end

new(arch) click to toggle source

    # File lib/facets/platform.rb, line 85
    def initialize(arch)
      case arch
      when Array then
        @cpu, @os, @version = arch
      when String then
        arch = arch.split '-'

        if arch.length > 2 and arch.last !~ /\d/ then # reassemble x86-linux-gnu
          extra = arch.pop
          arch.last << "-#{extra}"
        end

        cpu = arch.shift

        @cpu = case cpu
               when /i\d86/ then 'x86'
               else cpu
               end

        if arch.length == 2 and arch.last =~ /^\d+$/ then # for command-line
          @os, @version = arch
          return
        end

        os, = arch
        @cpu, os = nil, cpu if os.nil? # legacy jruby

        @os, @version = case os
          when /aix(\d+)/ then             [ 'aix',       $1  ]
          when /cygwin/ then               [ 'cygwin',    nil ]
          when /darwin(\d+)?/ then         [ 'darwin',    $1  ]
          when /freebsd(\d+)/ then         [ 'freebsd',   $1  ]
          when /hpux(\d+)/ then            [ 'hpux',      $1  ]
          when /^java$/, /^jruby$/ then    [ 'java',      nil ]
          when /^java([\d.]*)/ then        [ 'java',      $1  ]
          when /linux/ then                [ 'linux',     $1  ]
          when /mingw32/ then              [ 'mingw32',   nil ]
          when /(mswin\d+)(\_(\d+))?/ then
            os, version = $1, $3
            @cpu = 'x86' if @cpu.nil? and os =~ /32$/
            [os, version]
          when /netbsdelf/ then            [ 'netbsdelf', nil ]
          when /openbsd(\d+\.\d+)/ then    [ 'openbsd',   $1  ]
          when /solaris(\d+\.\d+)/ then    [ 'solaris',   $1  ]
          # test
          when /^(\w+_platform)(\d+)/ then [ $1,          $2  ]
          else                             [ 'unknown',   nil ]
        end
      when Platform then
        @cpu = arch.cpu
        @os = arch.os
        @version = arch.version
      else
        raise ArgumentError, "invalid argument #{arch.inspect}"
      end
    end

supported() click to toggle source

Array of supported platforms (ie. pure-Ruby and local platform).

    # File lib/facets/platform.rb, line 45
    def self.supported
      @suported ||= [Platform::RUBY, Platform.local]
    end

### Public Instance Methods

==(other) click to toggle source

    # File lib/facets/platform.rb, line 158
    def ==(other)
      self.class === other and
        @cpu == other.cpu and @os == other.os and @version == other.version
    end

===(other) click to toggle source

    # File lib/facets/platform.rb, line 164
    def ===(other)
      return nil unless Platform === other

      # cpu
      (@cpu == 'universal' or other.cpu == 'universal' or @cpu == other.cpu) and

      # os
      @os == other.os and

      # version
      (@version.nil? or other.version.nil? or @version == other.version)
    end

=~(other) click to toggle source

    # File lib/facets/platform.rb, line 178
    def =~(other)
      case other
      when Platform then # nop
      when String then
        # This data is from http://gems.rubyforge.org/gems/yaml on 19 Aug 2007
        other = case other
          when /^i686-darwin(\d)/ then     ['x86',       'darwin',  $1]
          when /^i\d86-linux/ then         ['x86',       'linux',   nil]
          when 'java', 'jruby' then        [nil,         'java',    nil]
          when /mswin32(\_(\d+))?/ then    ['x86',       'mswin32', $2]
          when 'powerpc-darwin' then       ['powerpc',   'darwin',  nil]
          when /powerpc-darwin(\d)/ then   ['powerpc',   'darwin',  $1]
          when /sparc-solaris2.8/ then     ['sparc',     'solaris', '2.8']
          when /universal-darwin(\d)/ then ['universal', 'darwin',  $1]
          else                             other
        end

        other = Platform.new other
      else
        return nil
      end

      self === other
    end

big_endian?() click to toggle source

    # File lib/facets/platform.rb, line 229
    def big_endian?
      byte_order == :big
    end

bsd?() click to toggle source

    # File lib/facets/platform.rb, line 299
    def bsd?
      host_os =~ /bsd/
    end

byte_order() click to toggle source

Byte order of CPU. Determine byte order of underlying machine.

Examines the byte order of the underlying machine. Returns `:big` if Big Endian and `:little` if Little Endian.

TODO: This doesn't work well apearently. We need to use a chart for possible cpus instead, maybe.

    # File lib/facets/platform.rb, line 212
    def byte_order
      if [0x12345678].pack("L") == "\x12\x34\x56\x78"
        :big
      else
        :little
      end
    end

Also aliased as: byteorder
byteorder() click to toggle source
Alias for: byte_order
cardinal?() click to toggle source

    # File lib/facets/platform.rb, line 278
    def cardinal?
      'cardinal' === interpreter
    end

Also aliased as: parrot?, perl?
enterprise?() click to toggle source
Alias for: ree?
host_os() click to toggle source

O P E R A T I N G S Y S T E M

    # File lib/facets/platform.rb, line 287
    def host_os
      RbConfig::CONFIG['host_os']
    end

inspect() click to toggle source

    # File lib/facets/platform.rb, line 143
    def inspect
      "#s:0x%x @cpu=%p, @os=%p, @version=%p>" % [self.class, object_id, *to_a]
    end

interpreter() click to toggle source

Return the name of the ruby interpreter.

    # File lib/facets/platform.rb, line 236
    def interpreter
      @interpreter ||= (
        if RUBY_PLATFORM == 'parrot'
          'cardinal'
        elsif RUBY_ENGINE == 'ruby'
          if RUBY_DESCRIPTION =~ /Enterprise/
            'ree'
          else
            'mri'
          end
        else
          RUBY_ENGINE.to_s # jruby, rbx, ironruby, macruby, etc.
        end
      )
    end

iron_ruby?() click to toggle source
Alias for: ironruby?
ironruby?() click to toggle source

    # File lib/facets/platform.rb, line 273
    def ironruby?
      'ironruby' === interpreter
    end

Also aliased as: iron_ruby?
java?() click to toggle source
Alias for: jruby?
jruby?() click to toggle source

    # File lib/facets/platform.rb, line 258
    def jruby?
      'jruby' === interpreter
    end

Also aliased as: java?
linux?() click to toggle source

    # File lib/facets/platform.rb, line 291
    def linux?
      host_os =~ /linux|cygwin/
    end

little_endian?() click to toggle source

    # File lib/facets/platform.rb, line 224
    def little_endian?
      byte_order == :little
    end

mac?() click to toggle source

    # File lib/facets/platform.rb, line 295
    def mac?
      host_os =~ /mac|darwin/
    end

mri?() click to toggle source

    # File lib/facets/platform.rb, line 252
    def mri?
      'mri' === interpreter
    end

Also aliased as: official_ruby?, ruby?
official_ruby?() click to toggle source
Alias for: mri?
parrot?() click to toggle source
Alias for: cardinal?
perl?() click to toggle source
Alias for: cardinal?
posix?() click to toggle source

    # File lib/facets/platform.rb, line 317
    def posix?
      linux? or mac? or bsd? or solaris? or begin
        fork do end
        true
      rescue NotImplementedError, NoMethodError
        false
      end
    end

rbx?() click to toggle source
Alias for: rubinius?
ree?() click to toggle source

    # File lib/facets/platform.rb, line 268
    def ree?
      'ree' === interpreter
    end

Also aliased as: enterprise?
rubinius?() click to toggle source

    # File lib/facets/platform.rb, line 263
    def rubinius?
      'rbx' === interpreter
    end

Also aliased as: rbx?
ruby?() click to toggle source
Alias for: mri?
solaris?() click to toggle source

    # File lib/facets/platform.rb, line 307
    def solaris?
      host_os =~ /solaris|sunos/
    end

symbian?() click to toggle source

TODO: who knows what symbian returns?

    # File lib/facets/platform.rb, line 312
    def symbian?
      host_os =~ /symbian/
    end

to_a() click to toggle source

    # File lib/facets/platform.rb, line 148
    def to_a
      [@cpu, @os, @version]
    end

to_s() click to toggle source

    # File lib/facets/platform.rb, line 153
    def to_s
      to_a.compact.join '-'
    end

windows?() click to toggle source

    # File lib/facets/platform.rb, line 303
    def windows?
      host_os =~ /mswin|mingw/
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.