RUBY(1)                              UNIX                              RUBY(1)



NAME
       ruby - Interpreted object-oriented scripting language

SYNOPSIS
       ruby  [--copyright]  [--version]  [-Sacdlnpswvy] [-0[octal]] [-C direc‐
       tory] [-F pattern] [-I  directory]  [-K  c]  [-T[level]]  [-e  command]
       [-i[extension]] [-r library] [-x[directory]] [--] [program_file] [argu‐
       ment ...]

DESCRIPTION
       Ruby is an interpreted scripting language for quick  and  easy  object-
       oriented  programming.   It has many features to process text files and
       to do system management tasks (as in Perl).  It  is  simple,  straight-
       forward, and extensible.

       If  you  want  a  language for easy object-oriented programming, or you
       don’t like the Perl ugliness, or you do like the concept of  LISP,  but
       don’t  like  too  much  parentheses,  Ruby  may be the language of your
       choice.

FEATURES
       Ruby’s features are as follows:

       Interpretive
              Ruby is an interpreted language, so you don’t have to  recompile
              programs written in Ruby to execute them.


       Variables have no type (dynamic typing)
              Variables  in Ruby can contain data of any type.  You don’t have
              to worry about variable typing.  Consequently, it has  a  weaker
              compile time check.


       No declaration needed
              You can use variables in your Ruby programs without any declara‐
              tions.   Variable  names  denote  their  scope,  local,  global,
              instance, etc.


       Simple syntax
              Ruby has a simple syntax influenced slightly from Eiffel.


       No user-level memory management
              Ruby  has automatic memory management.  Objects no longer refer‐
              enced from anywhere are automatically collected by  the  garbage
              collector built into the interpreter.


       Everything is an object
              Ruby  is  the  purely object-oriented language, and was so since
              its creation.  Even such basic data  as  integers  are  seen  as
              objects.


       Class, inheritance, and methods
              Of  course,  as an object-oriented language, Ruby has such basic
              features like classes, inheritance, and methods.


       Singleton methods
              Ruby has the ability to define methods for certain objects.  For
              example, you can define a press-button action for certain widget
              by defining a singleton method for the button.  Or, you can make
              up  your own prototype based object system using singleton meth‐
              ods, if you want to.


       Mix-in by modules
              Ruby intentionally does not have the multiple inheritance as  it
              is  a  source  of  confusion.   Instead, Ruby has the ability to
              share implementations across  the  inheritance  tree.   This  is
              often called ‘Mix-in’.


       Iterators
              Ruby has iterators for loop abstraction.


       Closures
              In Ruby, you can objectify the procedure.


       Text processing and regular expression
              Ruby has a bunch of text processing features like in Perl.


       Bignums
              With  built-in  bignums,  you  can  for example calculate facto‐
              rial(400).


       Exception handling
              As in Java(tm).


       Direct access to the OS
              Ruby can use most UNIX system calls, often used in  system  pro‐
              gramming.


       Dynamic loading
              On  most  UNIX  systems, you can load object files into the Ruby
              interpreter on-the-fly.


OPTIONS
       Ruby interpreter accepts  following  command-line  options  (switches).
       They are quite similar to those of perl(1).


       --copyright
              Prints the copyright notice.


       --version
              Prints the version of Ruby interpreter.


       -0[octal]
              (The  digit  ‘‘zero’’.)   Specifies  the  input record separator
              ("$/") as an octal number. If no digit is given, the null  char‐
              acter  is taken as the separator.  Other switches may follow the
              digits.  -00 turns Ruby into paragraph mode.  -0777  makes  Ruby
              read  whole  file  at  once as a single string since there is no
              legal character with that value.


       -C directory
              Causes Ruby to switch to the directory.


       -F pattern
              Specifies input field separator ("$;").


       -I directory
              Used to tell Ruby where to load the library scripts.   Directory
              path will be added to the load-path variable ("$:").


       -K kcode
              Specifies KANJI (Japanese) encoding.


       -S     Makes  Ruby  use  the  PATH  environment  variable to search for
              script, unless if its name begins with a slash.  This is used to
              emulate  #!  on machines that don’t support it, in the following
              manner:

              #! /usr/local/bin/ruby
              # This line makes the next one a comment in Ruby \
                exec /usr/local/bin/ruby -S $0 $*


       -T[level]
              Turns on taint checks at the specified level (default 1).


       -a     Turns on auto-split mode when used with -n or -p.  In auto-split
              mode, Ruby executes
                $F = $_.split
              at beginning of each loop.


       -c     Causes  Ruby  to check the syntax of the script and exit without
              executing. If there are no syntax errors, Ruby will print ‘‘Syn‐
              tax OK’’ to the standard output.


       -d

       --debug
              Turns on debug mode.  "$DEBUG" will be set to true.


       -e command
              Specifies  script  from  command-line  while telling Ruby not to
              search the rest of arguments for a script file name.


       -h

       --help Prints a summary of the options.


       -i extension
              Specifies in-place-edit mode.  The extension, if  specified,  is
              added to old file name to make a backup copy.  For example:

              % echo matz > /tmp/junk
              % cat /tmp/junk
              matz
              % ruby -p -i.bak -e ’$_.upcase!’ /tmp/junk
              % cat /tmp/junk
              MATZ
              % cat /tmp/junk.bak
              matz


       -l     (The  lowercase  letter ‘‘ell’’.)  Enables automatic line-ending
              processing, which means to firstly set  "$\"  to  the  value  of
              "$/", and secondly chops every line read using chop!.


       -n     Causes  Ruby  to  assume  the following loop around your script,
              which makes it iterate over file name  arguments  somewhat  like
              sed -n or awk.

              while gets
                ...
              end


       -p     Acts  mostly  same as -n switch, but print the value of variable
              "$_" at the each end of the loop.  For example:

              % echo matz | ruby -p -e ’$_.tr! "a-z", "A-Z"’
              MATZ


       -r library
              Causes Ruby to load the library using  require.   It  is  useful
              when using -n or -p.


       -s     Enables  some  switch parsing for switches after script name but
              before any file name arguments (or before a --).   Any  switches
              found  there  are  removed  from  ARGV and set the corresponding
              variable in the script.  For example:

              #! /usr/local/bin/ruby -s
              # prints "true" if invoked with ‘-xyz’ switch.
              print "true\n" if $xyz

              On some systems "$0" does not always contain the full  pathname,
              so  you need the -S switch to tell Ruby to search for the script
              if necessary.  To handle embedded spaces or such.  A better con‐
              struct than "$*" would be ${1+"$@"}, but it does not work if the
              script is being interpreted by csh(1).


       -v

       --verbose
              Enables verbose mode.  Ruby will print its version at the begin‐
              ning,  and  set  the  variable "$VERBOSE" to true.  Some methods
              print extra messages if this variable is true.  If  this  switch
              is  given,  and  no other switches are present, Ruby quits after
              printing its version.


       -w     Enables verbose mode without printing  version  message  at  the
              beginning.  It sets the "$VERBOSE" variable to true.


       -x[directory]
              Tells  Ruby  that  the script is embedded in a message.  Leading
              garbage will be discarded  until  the  first  that  starts  with
              ‘‘#!’’   and  contains  the  string,  ‘‘ruby’’.   Any meaningful
              switches on that line will applied.  The end of script  must  be
              specified  with  either EOF, "^D" ("control-D"), "^Z" ("control-
              Z"), or reserved word __END__.  If the directory name is  speci‐
              fied,  Ruby  will  switch  to  that  directory  before executing
              script.


       -y

       --yydebug
              Turns on compiler debug mode.  Ruby will print a bunch of inter‐
              nal  state messages during compiling scripts.  You don’t have to
              specify this switch, unless you are  going  to  debug  the  Ruby
              interpreter.


ENVIRONMENT
       RUBYLIB
              A  colon-separated  list  of  directories  that  are appended to
              Ruby’s library load path ("$:").

              e.g.:
                RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"


       RUBYOPT
              Additional Ruby options.

              e.g.
                RUBYOPT="-w -Ke"


       RUBYPATH
              A colon-separated list of directories  that  Ruby  searches  for
              Ruby programs when the -S flag is specified.  This variable pre‐
              cedes the PATH environment variable.


       RUBYSHELL
              The path to the system shell command.  This environment variable
              is  enabled  for  only mswin32, mingw32, and OS/2 platforms.  If
              this variable is not defined, Ruby refers to COMSPEC.


       PATH   Ruby refers to the PATH environment  variable  on  calling  Ker‐
              nel#system.


       RUBYLIB_PREFIX
              This variable is obsolete.


AUTHORS
       Ruby  is  designed  and  implemented  by  Yukihiro Matsumoto .



December 31, 2002      Ruby Programmers Reference Guide                RUBY(1)