mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15076 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			387 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			387 lines
		
	
	
	
		
			9.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
 | 
						|
.Dd December 31, 2002
 | 
						|
.Dt RUBY(1) "" "Ruby Programmers Reference Guide"
 | 
						|
.\".Dt RUBY 1
 | 
						|
.Os UNIX
 | 
						|
.Sh NAME
 | 
						|
.Nm ruby
 | 
						|
.Nd Interpreted object-oriented scripting language
 | 
						|
.Sh SYNOPSIS
 | 
						|
.Nm
 | 
						|
.Op Fl -copyright
 | 
						|
.Op Fl -version
 | 
						|
.Op Fl Sacdlnpswvy
 | 
						|
.Op Fl 0 Ns Op Ar octal
 | 
						|
.Op Fl C Ar directory
 | 
						|
.Op Fl E Ar encoding
 | 
						|
.Op Fl F Ar pattern
 | 
						|
.Op Fl I Ar directory
 | 
						|
.Op Fl K Ar c
 | 
						|
.Op Fl T Ns Op Ar level
 | 
						|
.Op Fl W Ns Op Ar level
 | 
						|
.Op Fl e Ar command
 | 
						|
.Op Fl i Ns Op Ar extension
 | 
						|
.Op Fl r Ar library
 | 
						|
.Op Fl x Ns Op Ar directory
 | 
						|
.Op Fl -disable-gems
 | 
						|
.Op Fl -
 | 
						|
.Op Ar program_file
 | 
						|
.Op Ar argument ...
 | 
						|
.Sh 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.
 | 
						|
.Pp
 | 
						|
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.
 | 
						|
.Sh FEATURES
 | 
						|
Ruby's features are as follows:
 | 
						|
.Bl -tag -width 6n
 | 
						|
.It Sy "Interpretive"
 | 
						|
Ruby is an interpreted language, so you don't have to recompile
 | 
						|
programs written in Ruby to execute them.
 | 
						|
.Pp
 | 
						|
.It Sy "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.
 | 
						|
.Pp
 | 
						|
.It Sy "No declaration needed"
 | 
						|
You can use variables in your Ruby programs without any declarations.
 | 
						|
Variable names denote their scope, local, global, instance, etc.
 | 
						|
.Pp
 | 
						|
.It Sy "Simple syntax"
 | 
						|
Ruby has a simple syntax influenced slightly from Eiffel.
 | 
						|
.Pp
 | 
						|
.It Sy "No user-level memory management"
 | 
						|
Ruby has automatic memory management.  Objects no longer referenced
 | 
						|
from anywhere are automatically collected by the garbage collector
 | 
						|
built into the interpreter.
 | 
						|
.Pp
 | 
						|
.It Sy "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.
 | 
						|
.Pp
 | 
						|
.It Sy "Class, inheritance, and methods"
 | 
						|
Of course, as an object-oriented language, Ruby has such basic
 | 
						|
features like classes, inheritance, and methods.
 | 
						|
.Pp
 | 
						|
.It Sy "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 methods, if you want
 | 
						|
to.
 | 
						|
.Pp
 | 
						|
.It Sy "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
 | 
						|
.Sq Mix-in .
 | 
						|
.Pp
 | 
						|
.It Sy "Iterators"
 | 
						|
Ruby has iterators for loop abstraction.
 | 
						|
.Pp
 | 
						|
.It Sy "Closures"
 | 
						|
In Ruby, you can objectify the procedure.
 | 
						|
.Pp
 | 
						|
.It Sy "Text processing and regular expression"
 | 
						|
Ruby has a bunch of text processing features like in Perl.
 | 
						|
.Pp
 | 
						|
.It Sy "Bignums"
 | 
						|
With built-in bignums, you can for example calculate factorial(400).
 | 
						|
.Pp
 | 
						|
.It Sy "Exception handling"
 | 
						|
As in Java(tm).
 | 
						|
.Pp
 | 
						|
.It Sy "Direct access to the OS"
 | 
						|
Ruby can use most
 | 
						|
.Ux
 | 
						|
system calls, often used in system programming.
 | 
						|
.Pp
 | 
						|
.It Sy "Dynamic loading"
 | 
						|
On most
 | 
						|
.Ux
 | 
						|
systems, you can load object files into the Ruby interpreter
 | 
						|
on-the-fly.
 | 
						|
.El
 | 
						|
.Pp
 | 
						|
.Sh OPTIONS
 | 
						|
Ruby interpreter accepts following command-line options (switches).
 | 
						|
They are quite similar to those of
 | 
						|
.Xr perl 1 .
 | 
						|
.Bl -tag -width "1234567890123" -compact
 | 
						|
.Pp
 | 
						|
.It Fl -copyright
 | 
						|
Prints the copyright notice.
 | 
						|
.Pp
 | 
						|
.It Fl -version
 | 
						|
Prints the version of Ruby interpreter.
 | 
						|
.Pp
 | 
						|
.It Fl 0 Ns Op Ar octal
 | 
						|
(The digit
 | 
						|
.Dq zero . )
 | 
						|
Specifies the input record separator
 | 
						|
.Pf ( Li "$/" )
 | 
						|
as an octal number. If no digit is given, the null character is taken
 | 
						|
as the separator.  Other switches may follow the digits.
 | 
						|
.Fl 00
 | 
						|
turns Ruby into paragraph mode.
 | 
						|
.Fl 0777
 | 
						|
makes Ruby read whole file at once as a single string since there is
 | 
						|
no legal character with that value.
 | 
						|
.Pp
 | 
						|
.It Fl C Ar directory
 | 
						|
.It Fl X Ar directory
 | 
						|
Causes Ruby to switch to the directory.
 | 
						|
.Pp
 | 
						|
.It Fl E Ar encname
 | 
						|
.It Fl -encoding Ar encname
 | 
						|
Specifies the encoding for the program codes.
 | 
						|
.Pp
 | 
						|
.It Fl F Ar pattern
 | 
						|
Specifies input field separator
 | 
						|
.Pf ( Li "$;" ) .
 | 
						|
.Pp
 | 
						|
.It Fl I Ar directory
 | 
						|
Used to tell Ruby where to load the library scripts.  Directory path
 | 
						|
will be added to the load-path variable
 | 
						|
.Pf ( Li "$:" ) .
 | 
						|
.Pp
 | 
						|
.It Fl K Ar kcode
 | 
						|
Specifies KANJI (Japanese) encoding.
 | 
						|
.Pp
 | 
						|
.It Fl S
 | 
						|
Makes Ruby use the
 | 
						|
.Ev PATH
 | 
						|
environment variable to search for script, unless if its name begins
 | 
						|
with a slash.  This is used to emulate
 | 
						|
.Li #!
 | 
						|
on machines that don't support it, in the following manner:
 | 
						|
.Bd -literal -offset indent
 | 
						|
#! /usr/local/bin/ruby
 | 
						|
# This line makes the next one a comment in Ruby \e
 | 
						|
  exec /usr/local/bin/ruby -S $0 $*
 | 
						|
.Ed
 | 
						|
.Pp
 | 
						|
.It Fl T Ns Op Ar level
 | 
						|
Turns on taint checks at the specified level (default 1).
 | 
						|
.Pp
 | 
						|
.It Fl W Ns Op Ar level
 | 
						|
Turns on verbose mode at the specified level, without printing version 
 | 
						|
message at the beginning. The level can be;
 | 
						|
.Bl -hang -offset indent
 | 
						|
.It Sy 0
 | 
						|
Verbose mode is "silence". It sets the
 | 
						|
.Li "$VERBOSE"
 | 
						|
to nil.
 | 
						|
.Pp
 | 
						|
.It Sy 1
 | 
						|
Verbose mode is "medium". It sets the
 | 
						|
.Li "$VERBOSE"
 | 
						|
to false.
 | 
						|
.Pp
 | 
						|
.It Sy 2 (default)
 | 
						|
Verbose mode is "verbose". It sets the
 | 
						|
.Li "$VERBOSE"
 | 
						|
to true.
 | 
						|
.Fl W Ns
 | 
						|
2 is same as
 | 
						|
.Fl w
 | 
						|
.
 | 
						|
.El
 | 
						|
.Pp
 | 
						|
.It Fl a
 | 
						|
Turns on auto-split mode when used with
 | 
						|
.Fl n
 | 
						|
or
 | 
						|
.Fl p .
 | 
						|
In auto-split mode, Ruby executes
 | 
						|
.Dl $F = $_.split
 | 
						|
at beginning of each loop.
 | 
						|
.Pp
 | 
						|
.It Fl c
 | 
						|
Causes Ruby to check the syntax of the script and exit without
 | 
						|
executing. If there are no syntax errors, Ruby will print
 | 
						|
.Dq Syntax OK
 | 
						|
to the standard output.
 | 
						|
.Pp
 | 
						|
.It Fl d
 | 
						|
.It Fl -debug
 | 
						|
Turns on debug mode.
 | 
						|
.Li "$DEBUG"
 | 
						|
will be set to true.
 | 
						|
.Pp
 | 
						|
.It Fl e Ar command
 | 
						|
Specifies script from command-line while telling Ruby not to search
 | 
						|
the rest of arguments for a script file name.
 | 
						|
.Pp
 | 
						|
.It Fl h
 | 
						|
.It Fl -help
 | 
						|
Prints a summary of the options.
 | 
						|
.Pp
 | 
						|
.It Fl i Ar extension
 | 
						|
Specifies in-place-edit mode.  The extension, if specified, is added
 | 
						|
to old file name to make a backup copy.  For example:
 | 
						|
.Bd -literal -offset indent
 | 
						|
% 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
 | 
						|
.Ed
 | 
						|
.Pp
 | 
						|
.It Fl l
 | 
						|
(The lowercase letter
 | 
						|
.Dq ell . )
 | 
						|
Enables automatic line-ending processing, which means to firstly set
 | 
						|
.Li "$\e"
 | 
						|
to the value of
 | 
						|
.Li "$/" ,
 | 
						|
and secondly chops every line read using
 | 
						|
.Li chop! .
 | 
						|
.Pp
 | 
						|
.It Fl n
 | 
						|
Causes Ruby to assume the following loop around your script, which
 | 
						|
makes it iterate over file name arguments somewhat like
 | 
						|
.Nm sed
 | 
						|
.Fl n
 | 
						|
or
 | 
						|
.Nm awk .
 | 
						|
.Bd -literal -offset indent
 | 
						|
while gets
 | 
						|
  ...
 | 
						|
end
 | 
						|
.Ed
 | 
						|
.Pp
 | 
						|
.It Fl p
 | 
						|
Acts mostly same as -n switch, but print the value of variable
 | 
						|
.Li "$_"
 | 
						|
at the each end of the loop.  For example:
 | 
						|
.Bd -literal -offset indent
 | 
						|
% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
 | 
						|
MATZ
 | 
						|
.Ed
 | 
						|
.Pp
 | 
						|
.It Fl r Ar library
 | 
						|
Causes Ruby to load the library using require.  It is useful when using
 | 
						|
.Fl n
 | 
						|
or
 | 
						|
.Fl p .
 | 
						|
.Pp
 | 
						|
.It Fl s
 | 
						|
Enables some switch parsing for switches after script name but before
 | 
						|
any file name arguments (or before a
 | 
						|
.Fl - ) .
 | 
						|
Any switches found there are removed from
 | 
						|
.Li ARGV
 | 
						|
and set the corresponding variable in the script.  For example:
 | 
						|
.Bd -literal -offset indent
 | 
						|
#! /usr/local/bin/ruby -s
 | 
						|
# prints "true" if invoked with `-xyz' switch.
 | 
						|
print "true\en" if $xyz
 | 
						|
.Ed
 | 
						|
.Pp
 | 
						|
On some systems
 | 
						|
.Li "$0"
 | 
						|
does not always contain the full pathname, so you need the
 | 
						|
.Fl S
 | 
						|
switch to tell Ruby to search for the script if necessary.  To handle
 | 
						|
embedded spaces or such.  A better construct than
 | 
						|
.Li "$*"
 | 
						|
would be
 | 
						|
.Li ${1+"$@"} ,
 | 
						|
but it does not work if the script is being interpreted by
 | 
						|
.Xr csh 1 .
 | 
						|
.Pp
 | 
						|
.It Fl v
 | 
						|
.It Fl -verbose
 | 
						|
Enables verbose mode.  Ruby will print its version at the beginning,
 | 
						|
and set the variable
 | 
						|
.Li "$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.
 | 
						|
.Pp
 | 
						|
.It Fl w
 | 
						|
Enables verbose mode without printing version message at the
 | 
						|
beginning.  It sets the
 | 
						|
.Li "$VERBOSE"
 | 
						|
variable to true.
 | 
						|
.Pp
 | 
						|
.It Fl x Ns Op Ar directory
 | 
						|
Tells Ruby that the script is embedded in a message.  Leading garbage
 | 
						|
will be discarded until the first that starts with
 | 
						|
.Dq #!
 | 
						|
and contains the string,
 | 
						|
.Dq ruby .
 | 
						|
Any meaningful switches on that line will applied.  The end of script
 | 
						|
must be specified with either
 | 
						|
.Li EOF ,
 | 
						|
.Li "^D" ( Li "control-D" ) ,
 | 
						|
.Li "^Z" ( Li "control-Z" ) ,
 | 
						|
or reserved word
 | 
						|
.Li __END__ .
 | 
						|
If the directory name is specified, Ruby will switch to that directory
 | 
						|
before executing script.
 | 
						|
.Pp
 | 
						|
.It Fl y
 | 
						|
.It Fl -yydebug
 | 
						|
Turns on compiler debug mode.  Ruby will print a bunch of internal
 | 
						|
state messages during compiling scripts.  You don't have to specify
 | 
						|
this switch, unless you are going to debug the Ruby interpreter.
 | 
						|
.Pp
 | 
						|
.It Fl -disable-gems
 | 
						|
Disables RubyGems libraries.  By default, Ruby will load the latest
 | 
						|
version of each installed gem.
 | 
						|
.El
 | 
						|
.Pp
 | 
						|
.Sh ENVIRONMENT
 | 
						|
.Bl -tag -width "RUBYLIB_PREFIX" -compact
 | 
						|
.It Ev RUBYLIB
 | 
						|
A colon-separated list of directories that are added to Ruby's
 | 
						|
library load path
 | 
						|
.Pf ( Li "$:" ) . Directories from this environment variable are searched
 | 
						|
before the standard load path is searched.
 | 
						|
.Pp
 | 
						|
e.g.:
 | 
						|
.Dl RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"
 | 
						|
.Pp
 | 
						|
.It Ev RUBYOPT
 | 
						|
Additional Ruby options.
 | 
						|
.Pp
 | 
						|
e.g.
 | 
						|
.Dl RUBYOPT="-w -Ke"
 | 
						|
.Pp
 | 
						|
.It Ev RUBYPATH
 | 
						|
A colon-separated list of directories that Ruby searches for
 | 
						|
Ruby programs when the
 | 
						|
.Fl S
 | 
						|
flag is specified.  This variable precedes the
 | 
						|
.Ev PATH
 | 
						|
environment variable.
 | 
						|
.Pp
 | 
						|
.It Ev 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
 | 
						|
.Ev COMSPEC .
 | 
						|
.Pp
 | 
						|
.It Ev PATH
 | 
						|
Ruby refers to the
 | 
						|
.Ev PATH
 | 
						|
environment variable on calling Kernel#system.
 | 
						|
.Pp
 | 
						|
.It Ev RUBYLIB_PREFIX
 | 
						|
This variable is obsolete.
 | 
						|
.El
 | 
						|
.Pp
 | 
						|
.Sh AUTHORS
 | 
						|
Ruby is designed and implemented by
 | 
						|
.An Yukihiro Matsumoto Aq matz@netlab.jp .
 |