2001-09-08 10:17:53 -04:00
|
|
|
.\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
|
2018-12-09 20:57:48 -05:00
|
|
|
.Dd April 14, 2018
|
2017-04-20 03:46:22 -04:00
|
|
|
.Dt RUBY \&1 "Ruby Programmer's Reference Guide"
|
2002-12-30 14:56:06 -05:00
|
|
|
.Os UNIX
|
|
|
|
.Sh NAME
|
|
|
|
.Nm ruby
|
|
|
|
.Nd Interpreted object-oriented scripting language
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.Nm
|
|
|
|
.Op Fl -copyright
|
|
|
|
.Op Fl -version
|
2008-10-22 09:23:59 -04:00
|
|
|
.Op Fl SUacdlnpswvy
|
2002-12-30 14:56:06 -05:00
|
|
|
.Op Fl 0 Ns Op Ar octal
|
|
|
|
.Op Fl C Ar directory
|
2008-10-22 09:23:59 -04:00
|
|
|
.Op Fl E Ar external Ns Op : Ns Ar internal
|
2015-10-31 02:22:31 -04:00
|
|
|
.Op Fl F Ns Op Ar pattern
|
2002-12-30 14:56:06 -05:00
|
|
|
.Op Fl I Ar directory
|
2015-10-31 02:22:31 -04:00
|
|
|
.Op Fl K Ns Op Ar c
|
2002-12-30 14:56:06 -05:00
|
|
|
.Op Fl T Ns Op Ar level
|
2008-01-14 02:10:22 -05:00
|
|
|
.Op Fl W Ns Op Ar level
|
2002-12-30 14:56:06 -05:00
|
|
|
.Op Fl e Ar command
|
|
|
|
.Op Fl i Ns Op Ar extension
|
|
|
|
.Op Fl r Ar library
|
|
|
|
.Op Fl x Ns Op Ar directory
|
2015-10-31 01:55:28 -04:00
|
|
|
.Op Fl - Ns Bro Cm enable Ns | Ns Cm disable Brc Ns - Ns Ar FEATURE
|
2008-11-11 09:14:29 -05:00
|
|
|
.Op Fl -dump Ns = Ns Ar target
|
2008-03-28 07:37:02 -04:00
|
|
|
.Op Fl -verbose
|
2002-12-30 14:56:06 -05:00
|
|
|
.Op Fl -
|
|
|
|
.Op Ar program_file
|
|
|
|
.Op Ar argument ...
|
|
|
|
.Sh DESCRIPTION
|
1999-01-19 23:59:39 -05:00
|
|
|
Ruby is an interpreted scripting language for quick and easy
|
|
|
|
object-oriented programming. It has many features to process text
|
2012-11-14 23:22:44 -05:00
|
|
|
files and to do system management tasks (like in Perl). It is simple,
|
1998-01-16 07:13:05 -05:00
|
|
|
straight-forward, and extensible.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
1998-01-16 07:13:05 -05:00
|
|
|
If you want a language for easy object-oriented programming, or you
|
2002-12-30 14:56:06 -05:00
|
|
|
don't like the Perl ugliness, or you do like the concept of LISP, but
|
2010-11-26 22:08:12 -05:00
|
|
|
don't like too many parentheses, Ruby might be your language of
|
1998-01-16 07:13:05 -05:00
|
|
|
choice.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Sh FEATURES
|
1998-01-16 07:13:05 -05:00
|
|
|
Ruby's features are as follows:
|
2004-03-21 07:08:02 -05:00
|
|
|
.Bl -tag -width 6n
|
2002-12-30 14:56:06 -05:00
|
|
|
.It Sy "Interpretive"
|
1999-01-19 23:59:39 -05:00
|
|
|
Ruby is an interpreted language, so you don't have to recompile
|
|
|
|
programs written in Ruby to execute them.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Variables have no type (dynamic typing)"
|
1999-01-19 23:59:39 -05:00
|
|
|
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.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "No declaration needed"
|
1999-01-19 23:59:39 -05:00
|
|
|
You can use variables in your Ruby programs without any declarations.
|
2010-11-26 22:08:12 -05:00
|
|
|
Variable names denote their scope - global, class, instance, or local.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Simple syntax"
|
1999-01-19 23:59:39 -05:00
|
|
|
Ruby has a simple syntax influenced slightly from Eiffel.
|
2002-12-30 14:56:06 -05:00
|
|
|
.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"
|
2010-11-26 22:08:12 -05:00
|
|
|
Ruby is a purely object-oriented language, and was so since its
|
1999-01-19 23:59:39 -05:00
|
|
|
creation. Even such basic data as integers are seen as objects.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Class, inheritance, and methods"
|
2010-11-26 22:08:12 -05:00
|
|
|
Being an object-oriented language, Ruby naturally has basic
|
1999-01-19 23:59:39 -05:00
|
|
|
features like classes, inheritance, and methods.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Singleton methods"
|
1999-01-19 23:59:39 -05:00
|
|
|
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.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Mix-in by modules"
|
1999-08-24 04:21:56 -04:00
|
|
|
Ruby intentionally does not have the multiple inheritance as it is a
|
|
|
|
source of confusion. Instead, Ruby has the ability to share
|
2010-11-26 22:08:12 -05:00
|
|
|
implementations across the inheritance tree. This is often called a
|
2002-12-30 14:56:06 -05:00
|
|
|
.Sq Mix-in .
|
|
|
|
.Pp
|
|
|
|
.It Sy "Iterators"
|
1998-01-16 07:13:05 -05:00
|
|
|
Ruby has iterators for loop abstraction.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Sy "Closures"
|
1999-01-19 23:59:39 -05:00
|
|
|
In Ruby, you can objectify the procedure.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
2010-11-26 22:08:12 -05:00
|
|
|
.It Sy "Text processing and regular expressions"
|
1999-01-19 23:59:39 -05:00
|
|
|
Ruby has a bunch of text processing features like in Perl.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
2008-10-22 09:23:59 -04:00
|
|
|
.It Sy "M17N, character set independent"
|
|
|
|
Ruby supports multilingualized programming. Easy to process texts
|
2009-10-26 02:44:31 -04:00
|
|
|
written in many different natural languages and encoded in many
|
2008-10-22 09:23:59 -04:00
|
|
|
different character encodings, without dependence on Unicode.
|
|
|
|
.Pp
|
2002-12-30 14:56:06 -05:00
|
|
|
.It Sy "Bignums"
|
1999-01-19 23:59:39 -05:00
|
|
|
With built-in bignums, you can for example calculate factorial(400).
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
2008-10-22 09:23:59 -04:00
|
|
|
.It Sy "Reflection and domain specific languages"
|
2010-11-26 22:08:12 -05:00
|
|
|
Class is also an instance of the Class class. Definition of classes and methods
|
|
|
|
is an expression just as 1+1 is. So your programs can even write and modify programs.
|
2008-10-22 09:23:59 -04:00
|
|
|
Thus you can write your application in your own programming language on top of Ruby.
|
|
|
|
.Pp
|
2002-12-30 14:56:06 -05:00
|
|
|
.It Sy "Exception handling"
|
1998-01-16 07:13:05 -05:00
|
|
|
As in Java(tm).
|
2002-12-30 14:56:06 -05:00
|
|
|
.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.
|
2008-10-22 09:23:59 -04:00
|
|
|
.It Sy "Rich libraries"
|
2016-09-23 07:21:55 -04:00
|
|
|
In addition to the
|
|
|
|
.Dq builtin libraries
|
|
|
|
and
|
|
|
|
.Dq standard libraries
|
|
|
|
that are bundled with Ruby, a vast amount of third-party libraries
|
|
|
|
.Pq Dq gems
|
|
|
|
are available via the package management system called
|
|
|
|
.Sq RubyGems ,
|
|
|
|
namely the
|
|
|
|
.Xr gem 1
|
|
|
|
command. Visit RubyGems.org
|
|
|
|
.Pq Lk https://rubygems.org/
|
|
|
|
to find the gems you need, and explore GitHub
|
|
|
|
.Pq Lk https://github.com/
|
|
|
|
to see how they are being developed and used.
|
2003-01-20 03:32:15 -05:00
|
|
|
.El
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.Sh OPTIONS
|
2018-04-14 12:48:40 -04:00
|
|
|
The Ruby interpreter accepts the following command-line options (switches).
|
2002-12-30 14:56:06 -05:00
|
|
|
They are quite similar to those of
|
|
|
|
.Xr perl 1 .
|
2003-11-21 02:13:43 -05:00
|
|
|
.Bl -tag -width "1234567890123" -compact
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Fl -copyright
|
2018-03-29 22:52:12 -04:00
|
|
|
Prints the copyright notice, and quits immediately without running any
|
|
|
|
script.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Fl -version
|
2018-04-14 12:48:40 -04:00
|
|
|
Prints the version of the Ruby interpreter, and quits immediately without
|
2018-03-29 22:52:12 -04:00
|
|
|
running any script.
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
2008-01-14 02:10:22 -05:00
|
|
|
.It Fl X Ar directory
|
2002-12-30 14:56:06 -05:00
|
|
|
Causes Ruby to switch to the directory.
|
|
|
|
.Pp
|
2008-10-22 09:23:59 -04:00
|
|
|
.It Fl E Ar external Ns Op : Ns Ar internal
|
|
|
|
.It Fl -encoding Ar external Ns Op : Ns Ar internal
|
|
|
|
Specifies the default value(s) for external encodings and internal encoding. Values should be separated with colon (:).
|
2009-10-26 02:44:31 -04:00
|
|
|
.Pp
|
2010-12-01 06:07:03 -05:00
|
|
|
You can omit the one for internal encodings, then the value
|
2008-10-22 09:23:59 -04:00
|
|
|
.Pf ( Li "Encoding.default_internal" ) will be nil.
|
2008-01-14 02:10:22 -05:00
|
|
|
.Pp
|
2013-01-11 12:44:16 -05:00
|
|
|
.It Fl -external-encoding Ns = Ns Ar encoding
|
|
|
|
.It Fl -internal-encoding Ns = Ns Ar encoding
|
|
|
|
Specify the default external or internal character encoding
|
|
|
|
.Pp
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
2008-10-22 09:23:59 -04:00
|
|
|
Specifies KANJI (Japanese) encoding. The default value for script encodings
|
|
|
|
.Pf ( Li "__ENCODING__" ) and external encodings ( Li "Encoding.default_external" ) will be the specified one.
|
|
|
|
.Ar kcode
|
2009-10-26 02:44:31 -04:00
|
|
|
can be one of
|
2008-10-22 09:23:59 -04:00
|
|
|
.Bl -hang -offset indent
|
|
|
|
.It Sy e
|
|
|
|
EUC-JP
|
|
|
|
.Pp
|
|
|
|
.It Sy s
|
|
|
|
Windows-31J (CP932)
|
|
|
|
.Pp
|
|
|
|
.It Sy u
|
|
|
|
UTF-8
|
|
|
|
.Pp
|
|
|
|
.It Sy n
|
|
|
|
ASCII-8BIT (BINARY)
|
|
|
|
.El
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Fl S
|
|
|
|
Makes Ruby use the
|
|
|
|
.Ev PATH
|
2012-11-14 21:37:05 -05:00
|
|
|
environment variable to search for script, unless its name begins
|
2003-11-21 02:13:43 -05:00
|
|
|
with a slash. This is used to emulate
|
|
|
|
.Li #!
|
|
|
|
on machines that don't support it, in the following manner:
|
2002-12-30 14:56:06 -05:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
#! /usr/local/bin/ruby
|
2003-11-21 02:13:43 -05:00
|
|
|
# This line makes the next one a comment in Ruby \e
|
2002-12-30 14:56:06 -05:00
|
|
|
exec /usr/local/bin/ruby -S $0 $*
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2017-08-04 13:05:43 -04:00
|
|
|
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 and 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
|
2009-10-25 23:41:01 -04:00
|
|
|
.It Fl T Ns Op Ar level=1
|
2002-12-30 14:56:06 -05:00
|
|
|
Turns on taint checks at the specified level (default 1).
|
|
|
|
.Pp
|
2008-10-22 09:23:59 -04:00
|
|
|
.It Fl U
|
2010-11-26 22:08:12 -05:00
|
|
|
Sets the default value for internal encodings
|
2008-10-22 09:23:59 -04:00
|
|
|
.Pf ( Li "Encoding.default_internal" ) to UTF-8.
|
|
|
|
.Pp
|
2009-10-25 23:41:01 -04:00
|
|
|
.It Fl W Ns Op Ar level=2
|
2012-11-14 21:37:05 -05:00
|
|
|
Turns on verbose mode at the specified level without printing the version
|
2008-01-14 02:10:22 -05:00
|
|
|
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
|
2021-01-05 09:13:53 -05:00
|
|
|
2 is the same as
|
2008-01-14 02:10:22 -05:00
|
|
|
.Fl w
|
|
|
|
.
|
|
|
|
.El
|
|
|
|
.Pp
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
1998-01-16 07:13:05 -05:00
|
|
|
at beginning of each loop.
|
2002-12-30 14:56:06 -05:00
|
|
|
.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"
|
2003-11-21 02:13:43 -05:00
|
|
|
will be set to true.
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Fl e Ar command
|
2003-11-21 02:13:43 -05:00
|
|
|
Specifies script from command-line while telling Ruby not to search
|
2010-11-26 22:08:12 -05:00
|
|
|
the rest of the arguments for a script file name.
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
2003-11-21 02:13:43 -05:00
|
|
|
to old file name to make a backup copy. For example:
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
2020-11-30 05:06:25 -05:00
|
|
|
.Li chomp! .
|
2002-12-30 14:56:06 -05:00
|
|
|
.Pp
|
|
|
|
.It Fl n
|
|
|
|
Causes Ruby to assume the following loop around your script, which
|
2003-11-21 02:13:43 -05:00
|
|
|
makes it iterate over file name arguments somewhat like
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
2003-11-21 02:13:43 -05:00
|
|
|
any file name arguments (or before a
|
2002-12-30 14:56:06 -05:00
|
|
|
.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
|
|
|
|
.It Fl v
|
2012-11-14 21:37:05 -05:00
|
|
|
Enables verbose mode. Ruby will print its version at the beginning
|
2002-12-30 14:56:06 -05:00
|
|
|
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
|
2012-11-14 21:37:05 -05:00
|
|
|
will be discarded until the first line that starts with
|
2002-12-30 14:56:06 -05:00
|
|
|
.Dq #!
|
|
|
|
and contains the string,
|
|
|
|
.Dq ruby .
|
2012-11-14 21:37:05 -05:00
|
|
|
Any meaningful switches on that line will be applied. The end of the script
|
2003-11-21 02:13:43 -05:00
|
|
|
must be specified with either
|
|
|
|
.Li EOF ,
|
|
|
|
.Li "^D" ( Li "control-D" ) ,
|
|
|
|
.Li "^Z" ( Li "control-Z" ) ,
|
2010-11-26 22:08:12 -05:00
|
|
|
or the reserved word
|
2002-12-30 14:56:06 -05:00
|
|
|
.Li __END__ .
|
|
|
|
If the directory name is specified, Ruby will switch to that directory
|
|
|
|
before executing script.
|
|
|
|
.Pp
|
|
|
|
.It Fl y
|
|
|
|
.It Fl -yydebug
|
2008-11-11 09:14:29 -05:00
|
|
|
DO NOT USE.
|
2009-10-26 02:44:31 -04:00
|
|
|
.Pp
|
2002-12-30 14:56:06 -05:00
|
|
|
Turns on compiler debug mode. Ruby will print a bunch of internal
|
2012-11-14 21:37:05 -05:00
|
|
|
state messages during compilation. Only specify this switch you are going to
|
|
|
|
debug the Ruby interpreter.
|
2008-01-14 02:10:22 -05:00
|
|
|
.Pp
|
2008-04-17 10:52:14 -04:00
|
|
|
.It Fl -disable- Ns Ar FEATURE
|
|
|
|
.It Fl -enable- Ns Ar FEATURE
|
|
|
|
Disables (or enables) the specified
|
2016-09-26 08:39:18 -04:00
|
|
|
.Ar FEATURE .
|
2008-10-22 09:23:59 -04:00
|
|
|
.Bl -tag -width "--disable-rubyopt" -compact
|
2008-01-14 02:10:22 -05:00
|
|
|
.It Fl -disable-gems
|
2008-04-17 10:52:14 -04:00
|
|
|
.It Fl -enable-gems
|
|
|
|
Disables (or enables) RubyGems libraries. By default, Ruby will load the latest
|
|
|
|
version of each installed gem. The
|
2008-10-22 09:23:59 -04:00
|
|
|
.Li Gem
|
2008-04-17 10:52:14 -04:00
|
|
|
constant is true if RubyGems is enabled, false if otherwise.
|
|
|
|
.Pp
|
|
|
|
.It Fl -disable-rubyopt
|
|
|
|
.It Fl -enable-rubyopt
|
|
|
|
Ignores (or considers) the
|
|
|
|
.Ev RUBYOPT
|
|
|
|
environment variable. By default, Ruby considers the variable.
|
|
|
|
.Pp
|
|
|
|
.It Fl -disable-all
|
|
|
|
.It Fl -enable-all
|
|
|
|
Disables (or enables) all features.
|
2008-03-28 07:37:02 -04:00
|
|
|
.Pp
|
2008-10-22 09:23:59 -04:00
|
|
|
.El
|
|
|
|
.Pp
|
2008-11-11 09:14:29 -05:00
|
|
|
.It Fl -dump Ns = Ns Ar target
|
2019-12-19 19:19:39 -05:00
|
|
|
Dump some information.
|
2009-10-26 02:44:31 -04:00
|
|
|
.Pp
|
2008-11-11 09:14:29 -05:00
|
|
|
Prints the specified target.
|
|
|
|
.Ar target
|
|
|
|
can be one of;
|
|
|
|
.Bl -hang -offset indent
|
2015-11-14 21:04:37 -05:00
|
|
|
.It Sy version
|
|
|
|
version description same as
|
|
|
|
.Fl -version
|
|
|
|
.It Sy usage
|
|
|
|
brief usage message same as
|
|
|
|
.Fl h
|
|
|
|
.It Sy help
|
|
|
|
Show long help message same as
|
|
|
|
.Fl -help
|
|
|
|
.It Sy syntax
|
|
|
|
check of syntax same as
|
|
|
|
.Fl c
|
|
|
|
.Fl -yydebug
|
|
|
|
.It Sy yydebug
|
|
|
|
compiler debug mode, same as
|
|
|
|
.Fl -yydebug
|
|
|
|
.Pp
|
|
|
|
Only specify this switch if you are going to debug the Ruby interpreter.
|
|
|
|
.It Sy parsetree
|
|
|
|
.It Sy parsetree_with_comment
|
|
|
|
AST nodes tree
|
|
|
|
.Pp
|
|
|
|
Only specify this switch if you are going to debug the Ruby interpreter.
|
2008-11-11 09:14:29 -05:00
|
|
|
.It Sy insns
|
2010-12-01 06:07:03 -05:00
|
|
|
disassembled instructions
|
2008-11-11 09:14:29 -05:00
|
|
|
.Pp
|
2012-11-14 21:37:05 -05:00
|
|
|
Only specify this switch if you are going to debug the Ruby interpreter.
|
2015-11-14 21:04:37 -05:00
|
|
|
.El
|
2008-11-11 09:14:29 -05:00
|
|
|
.Pp
|
2008-03-28 07:37:02 -04:00
|
|
|
.It Fl -verbose
|
|
|
|
Enables verbose mode without printing version message at the
|
|
|
|
beginning. It sets the
|
|
|
|
.Li "$VERBOSE"
|
|
|
|
variable to true.
|
2018-03-29 22:52:12 -04:00
|
|
|
If this switch is given, and no script arguments (script file or
|
|
|
|
.Fl e
|
|
|
|
options) are present, Ruby quits immediately.
|
2002-12-30 14:56:06 -05:00
|
|
|
.El
|
|
|
|
.Pp
|
2003-11-21 00:49:59 -05:00
|
|
|
.Sh ENVIRONMENT
|
2014-04-16 04:46:31 -04:00
|
|
|
.Bl -tag -width "RUBYSHELL" -compact
|
2003-11-21 02:13:43 -05:00
|
|
|
.It Ev RUBYLIB
|
* sprintf.c (rb_str_format): allow %c to print one character
string (e.g. ?x).
* lib/tempfile.rb (Tempfile::make_tmpname): put dot between
basename and pid. [ruby-talk:196272]
* parse.y (do_block): remove -> style block.
* parse.y (parser_yylex): remove tLAMBDA_ARG.
* eval.c (rb_call0): binding for the return event hook should have
consistent scope. [ruby-core:07928]
* eval.c (proc_invoke): return behavior should depend whether it
is surrounded by a lambda or a mere block.
* eval.c (formal_assign): handles post splat arguments.
* eval.c (rb_call0): ditto.
* st.c (strhash): use FNV-1a hash.
* parse.y (parser_yylex): removed experimental ';;' terminator.
* eval.c (rb_node_arity): should be aware of post splat arguments.
* eval.c (rb_proc_arity): ditto.
* parse.y (f_args): syntax rule enhanced to support arguments
after the splat.
* parse.y (block_param): ditto for block parameters.
* parse.y (f_post_arg): mandatory formal arguments after the splat
argument.
* parse.y (new_args_gen): generate nodes for mandatory formal
arguments after the splat argument.
* eval.c (rb_eval): dispatch mandatory formal arguments after the
splat argument.
* parse.y (args): allow more than one splat in the argument list.
* parse.y (method_call): allow aref [] to accept all kind of
method argument, including assocs, splat, and block argument.
* eval.c (SETUP_ARGS0): prepare block argument as well.
* lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
* eval.c (error_line): print receivers true/false/nil specially.
* eval.c (rb_proc_yield): handles parameters in yield semantics.
* eval.c (nil_yield): gives LocalJumpError to denote no block
error.
* io.c (rb_io_getc): now takes one-character string.
* string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
hashing algorithm.
* string.c (rb_str_aref): str[0] now returns 1 character string,
instead of a fixnum. [Ruby2]
* parse.y (parser_yylex): ?c now returns 1 character string,
instead of a fixnum. [Ruby2]
* string.c (rb_str_aset): no longer support fixnum insertion.
* eval.c (umethod_bind): should not update original class.
[ruby-dev:28636]
* eval.c (ev_const_get): should support constant access from
within instance_eval(). [ruby-dev:28327]
* time.c (time_timeval): should round for usec floating
number. [ruby-core:07896]
* time.c (time_add): ditto.
* dir.c (sys_warning): should not call a vararg function
rb_sys_warning() indirectly. [ruby-core:07886]
* numeric.c (flo_divmod): the first element of Float#divmod should
be an integer. [ruby-dev:28589]
* test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
* re.c (rb_reg_initialize): should not allow modifying literal
regexps. frozen check moved from rb_reg_initialize_m as well.
* re.c (rb_reg_initialize): should not modify untainted objects in
safe levels higher than 3.
* re.c (rb_memcmp): type change from char* to const void*.
* dir.c (dir_close): should not close untainted dir stream.
* dir.c (GetDIR): add tainted/frozen check for each dir operation.
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
typo fixed. a patch from Florian Gross <florg at florg.net>.
* eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
event_hooks. no guarantee for arbitrary hook deletion.
[ruby-dev:28632]
* util.c (ruby_strtod): differ addition to minimize error.
[ruby-dev:28619]
* util.c (ruby_strtod): should not raise ERANGE when the input
string does not have any digits. [ruby-dev:28629]
* eval.c (proc_invoke): should restore old ruby_frame->block.
thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
also fix [ruby-dev:28614] as well.
* signal.c (trap): sig should be less then NSIG. Coverity found
this bug. a patch from Kevin Tew <tewk at tewk.com>.
[ruby-core:07823]
* math.c (math_log2): add new method inspired by
[ruby-talk:191237].
* math.c (math_log): add optional base argument to Math::log().
[ruby-talk:191308]
* ext/syck/emitter.c (syck_scan_scalar): avoid accessing
uninitialized array element. a patch from Pat Eyler
<rubypate at gmail.com>. [ruby-core:07809]
* array.c (rb_ary_fill): initialize local variables first. a
patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
* ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
[ruby-core:07808]
* ext/socket/socket.c (make_hostent_internal): accept ai_family
check from Sam Roberts <sroberts at uniserve.com>.
[ruby-core:07691]
* util.c (ruby_strtod): should not cut off 18 digits for no
reason. [ruby-core:07796]
* array.c (rb_ary_fill): internalize local variable "beg" to
pacify Coverity. [ruby-core:07770]
* pack.c (pack_unpack): now supports CRLF newlines. a patch from
<tommy at tmtm.org>. [ruby-dev:28601]
* applied code clean-up patch from Stefan Huehner
<stefan at huehner.org>. [ruby-core:07764]
* lib/jcode.rb (String::tr_s): should have translated non
squeezing character sequence (i.e. a character) as well. thanks
to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
* ext/socket/socket.c: document update patch from Sam Roberts
<sroberts at uniserve.com>. [ruby-core:07701]
* lib/mathn.rb (Integer): need not to remove gcd2. a patch from
NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
* parse.y (arg): too much NEW_LIST()
* eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.
* eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
[ruby-dev:28585]
* parse.y (arg): use NODE_ARGSCAT for placeholder.
* lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
mathew <meta at pobox.com>. [ruby-core:07738]
* variable.c (rb_const_set): raise error when no target klass is
supplied. [ruby-dev:28582]
* prec.c (prec_prec_f): documentation patch from
<gerardo.santana at gmail.com>. [ruby-core:07689]
* bignum.c (rb_big_pow): second operand may be too big even if
it's a Fixnum. [ruby-talk:187984]
* README.EXT: update symbol description. [ruby-talk:188104]
* COPYING: explicitly note GPLv2. [ruby-talk:187922]
* parse.y: remove some obsolete syntax rules (unparenthesized
method calls in argument list).
* eval.c (rb_call0): insecure calling should be checked for non
NODE_SCOPE method invocations too.
* eval.c (rb_alias): should preserve the current safe level as
well as method definition.
* process.c (rb_f_sleep): remove RDoc description about SIGALRM
which is not valid on the current implementation. [ruby-dev:28464]
Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
* eval.c (method_missing): should support argument splat in
super. a bug in combination of super, splat and
method_missing. [ruby-talk:185438]
* configure.in: Solaris SunPro compiler -rapth patch from
<kuwa at labs.fujitsu.com>. [ruby-dev:28443]
* configure.in: remove enable_rpath=no for Solaris.
[ruby-dev:28440]
* ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
String object.
* ruby.1: a clarification patch from David Lutterkort
<dlutter at redhat.com>. [ruby-core:7508]
* lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
directories. a patch from Eric Hodel <drbrain at segment7.net>.
[ruby-core:07423]
* eval.c (rb_clear_cache_by_class): clearing wrong cache.
* ext/extmk.rb: use :remove_destination to install extension libraries
to avoid SEGV. [ruby-dev:28417]
* eval.c (rb_thread_fd_writable): should not re-schedule output
from KILLED thread (must be error printing).
* array.c (rb_ary_flatten_bang): allow specifying recursion
level. [ruby-talk:182170]
* array.c (rb_ary_flatten): ditto.
* gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
Weil <weil at mail.berlios.de>.
* eval.c (rb_call): use separate cache for fcall/vcall
invocation.
* eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
functions.
* eval.c (rb_mod_local): a new method to specify newly added
visibility "local".
* eval.c (search_method): search for local methods which are
visible only from the current class.
* class.c (rb_class_local_methods): a method to list local methods.
* object.c (Init_Object): add BasicObject class as a top level
BlankSlate class.
* ruby.h (SYM2ID): should not cast to signed long.
[ruby-core:07414]
* class.c (rb_include_module): allow module duplication.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-09 17:20:17 -04:00
|
|
|
A colon-separated list of directories that are added to Ruby's
|
2003-11-21 02:13:43 -05:00
|
|
|
library load path
|
* sprintf.c (rb_str_format): allow %c to print one character
string (e.g. ?x).
* lib/tempfile.rb (Tempfile::make_tmpname): put dot between
basename and pid. [ruby-talk:196272]
* parse.y (do_block): remove -> style block.
* parse.y (parser_yylex): remove tLAMBDA_ARG.
* eval.c (rb_call0): binding for the return event hook should have
consistent scope. [ruby-core:07928]
* eval.c (proc_invoke): return behavior should depend whether it
is surrounded by a lambda or a mere block.
* eval.c (formal_assign): handles post splat arguments.
* eval.c (rb_call0): ditto.
* st.c (strhash): use FNV-1a hash.
* parse.y (parser_yylex): removed experimental ';;' terminator.
* eval.c (rb_node_arity): should be aware of post splat arguments.
* eval.c (rb_proc_arity): ditto.
* parse.y (f_args): syntax rule enhanced to support arguments
after the splat.
* parse.y (block_param): ditto for block parameters.
* parse.y (f_post_arg): mandatory formal arguments after the splat
argument.
* parse.y (new_args_gen): generate nodes for mandatory formal
arguments after the splat argument.
* eval.c (rb_eval): dispatch mandatory formal arguments after the
splat argument.
* parse.y (args): allow more than one splat in the argument list.
* parse.y (method_call): allow aref [] to accept all kind of
method argument, including assocs, splat, and block argument.
* eval.c (SETUP_ARGS0): prepare block argument as well.
* lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]
* eval.c (error_line): print receivers true/false/nil specially.
* eval.c (rb_proc_yield): handles parameters in yield semantics.
* eval.c (nil_yield): gives LocalJumpError to denote no block
error.
* io.c (rb_io_getc): now takes one-character string.
* string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
hashing algorithm.
* string.c (rb_str_aref): str[0] now returns 1 character string,
instead of a fixnum. [Ruby2]
* parse.y (parser_yylex): ?c now returns 1 character string,
instead of a fixnum. [Ruby2]
* string.c (rb_str_aset): no longer support fixnum insertion.
* eval.c (umethod_bind): should not update original class.
[ruby-dev:28636]
* eval.c (ev_const_get): should support constant access from
within instance_eval(). [ruby-dev:28327]
* time.c (time_timeval): should round for usec floating
number. [ruby-core:07896]
* time.c (time_add): ditto.
* dir.c (sys_warning): should not call a vararg function
rb_sys_warning() indirectly. [ruby-core:07886]
* numeric.c (flo_divmod): the first element of Float#divmod should
be an integer. [ruby-dev:28589]
* test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.
* re.c (rb_reg_initialize): should not allow modifying literal
regexps. frozen check moved from rb_reg_initialize_m as well.
* re.c (rb_reg_initialize): should not modify untainted objects in
safe levels higher than 3.
* re.c (rb_memcmp): type change from char* to const void*.
* dir.c (dir_close): should not close untainted dir stream.
* dir.c (GetDIR): add tainted/frozen check for each dir operation.
* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
typo fixed. a patch from Florian Gross <florg at florg.net>.
* eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
event_hooks. no guarantee for arbitrary hook deletion.
[ruby-dev:28632]
* util.c (ruby_strtod): differ addition to minimize error.
[ruby-dev:28619]
* util.c (ruby_strtod): should not raise ERANGE when the input
string does not have any digits. [ruby-dev:28629]
* eval.c (proc_invoke): should restore old ruby_frame->block.
thanks to ts <decoux at moulon.inra.fr>. [ruby-core:07833]
also fix [ruby-dev:28614] as well.
* signal.c (trap): sig should be less then NSIG. Coverity found
this bug. a patch from Kevin Tew <tewk at tewk.com>.
[ruby-core:07823]
* math.c (math_log2): add new method inspired by
[ruby-talk:191237].
* math.c (math_log): add optional base argument to Math::log().
[ruby-talk:191308]
* ext/syck/emitter.c (syck_scan_scalar): avoid accessing
uninitialized array element. a patch from Pat Eyler
<rubypate at gmail.com>. [ruby-core:07809]
* array.c (rb_ary_fill): initialize local variables first. a
patch from Pat Eyler <rubypate at gmail.com>. [ruby-core:07810]
* ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
type_tag. a patch from Pat Eyler <rubypate at gmail.com>.
[ruby-core:07808]
* ext/socket/socket.c (make_hostent_internal): accept ai_family
check from Sam Roberts <sroberts at uniserve.com>.
[ruby-core:07691]
* util.c (ruby_strtod): should not cut off 18 digits for no
reason. [ruby-core:07796]
* array.c (rb_ary_fill): internalize local variable "beg" to
pacify Coverity. [ruby-core:07770]
* pack.c (pack_unpack): now supports CRLF newlines. a patch from
<tommy at tmtm.org>. [ruby-dev:28601]
* applied code clean-up patch from Stefan Huehner
<stefan at huehner.org>. [ruby-core:07764]
* lib/jcode.rb (String::tr_s): should have translated non
squeezing character sequence (i.e. a character) as well. thanks
to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]
* ext/socket/socket.c: document update patch from Sam Roberts
<sroberts at uniserve.com>. [ruby-core:07701]
* lib/mathn.rb (Integer): need not to remove gcd2. a patch from
NARUSE, Yui <naruse at airemix.com>. [ruby-dev:28570]
* parse.y (arg): too much NEW_LIST()
* eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.
* eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
[ruby-dev:28585]
* parse.y (arg): use NODE_ARGSCAT for placeholder.
* lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
mathew <meta at pobox.com>. [ruby-core:07738]
* variable.c (rb_const_set): raise error when no target klass is
supplied. [ruby-dev:28582]
* prec.c (prec_prec_f): documentation patch from
<gerardo.santana at gmail.com>. [ruby-core:07689]
* bignum.c (rb_big_pow): second operand may be too big even if
it's a Fixnum. [ruby-talk:187984]
* README.EXT: update symbol description. [ruby-talk:188104]
* COPYING: explicitly note GPLv2. [ruby-talk:187922]
* parse.y: remove some obsolete syntax rules (unparenthesized
method calls in argument list).
* eval.c (rb_call0): insecure calling should be checked for non
NODE_SCOPE method invocations too.
* eval.c (rb_alias): should preserve the current safe level as
well as method definition.
* process.c (rb_f_sleep): remove RDoc description about SIGALRM
which is not valid on the current implementation. [ruby-dev:28464]
Thu Mar 23 21:40:47 2006 K.Kosako <sndgk393 AT ybb.ne.jp>
* eval.c (method_missing): should support argument splat in
super. a bug in combination of super, splat and
method_missing. [ruby-talk:185438]
* configure.in: Solaris SunPro compiler -rapth patch from
<kuwa at labs.fujitsu.com>. [ruby-dev:28443]
* configure.in: remove enable_rpath=no for Solaris.
[ruby-dev:28440]
* ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
of converting OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
String object.
* ruby.1: a clarification patch from David Lutterkort
<dlutter at redhat.com>. [ruby-core:7508]
* lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
directories. a patch from Eric Hodel <drbrain at segment7.net>.
[ruby-core:07423]
* eval.c (rb_clear_cache_by_class): clearing wrong cache.
* ext/extmk.rb: use :remove_destination to install extension libraries
to avoid SEGV. [ruby-dev:28417]
* eval.c (rb_thread_fd_writable): should not re-schedule output
from KILLED thread (must be error printing).
* array.c (rb_ary_flatten_bang): allow specifying recursion
level. [ruby-talk:182170]
* array.c (rb_ary_flatten): ditto.
* gc.c (add_heap): a heap_slots may overflow. a patch from Stefan
Weil <weil at mail.berlios.de>.
* eval.c (rb_call): use separate cache for fcall/vcall
invocation.
* eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
functions.
* eval.c (rb_mod_local): a new method to specify newly added
visibility "local".
* eval.c (search_method): search for local methods which are
visible only from the current class.
* class.c (rb_class_local_methods): a method to list local methods.
* object.c (Init_Object): add BasicObject class as a top level
BlankSlate class.
* ruby.h (SYM2ID): should not cast to signed long.
[ruby-core:07414]
* class.c (rb_include_module): allow module duplication.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-09 17:20:17 -04:00
|
|
|
.Pf ( Li "$:" ) . Directories from this environment variable are searched
|
|
|
|
before the standard load path is searched.
|
2003-11-21 00:49:59 -05:00
|
|
|
.Pp
|
2003-11-21 02:13:43 -05:00
|
|
|
e.g.:
|
|
|
|
.Dl RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"
|
2003-11-21 00:49:59 -05:00
|
|
|
.Pp
|
2003-11-21 02:13:43 -05:00
|
|
|
.It Ev RUBYOPT
|
|
|
|
Additional Ruby options.
|
2003-11-21 00:49:59 -05:00
|
|
|
.Pp
|
2003-11-21 02:13:43 -05:00
|
|
|
e.g.
|
|
|
|
.Dl RUBYOPT="-w -Ke"
|
2003-11-21 00:49:59 -05:00
|
|
|
.Pp
|
2008-11-11 09:14:29 -05:00
|
|
|
Note that RUBYOPT can contain only
|
|
|
|
.Fl d , Fl E , Fl I , Fl K , Fl r , Fl T , Fl U , Fl v , Fl w , Fl W, Fl -debug ,
|
|
|
|
.Fl -disable- Ns Ar FEATURE
|
|
|
|
and
|
|
|
|
.Fl -enable- Ns Ar FEATURE .
|
|
|
|
.Pp
|
2003-11-21 02:13:43 -05:00
|
|
|
.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.
|
2003-11-21 00:49:59 -05:00
|
|
|
.Pp
|
2003-11-21 02:13:43 -05:00
|
|
|
.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.
|
2003-11-21 00:49:59 -05:00
|
|
|
.El
|
|
|
|
.Pp
|
2010-11-26 22:08:12 -05:00
|
|
|
And Ruby depends on some RubyGems related environment variables unless RubyGems is disabled.
|
2008-10-25 11:15:06 -04:00
|
|
|
See the help of
|
|
|
|
.Xr gem 1
|
2014-09-03 14:58:56 -04:00
|
|
|
as below.
|
2008-10-25 11:15:06 -04:00
|
|
|
.Bd -literal -offset indent
|
|
|
|
% gem help
|
|
|
|
.Ed
|
|
|
|
.Pp
|
2014-12-15 17:39:33 -05:00
|
|
|
.Sh GC ENVIRONMENT
|
|
|
|
The Ruby garbage collector (GC) tracks objects in fixed-sized slots,
|
2015-12-24 18:23:46 -05:00
|
|
|
but each object may have auxiliary memory allocations handled by the
|
2014-12-15 17:39:33 -05:00
|
|
|
malloc family of C standard library calls (
|
|
|
|
.Xr malloc 3 ,
|
|
|
|
.Xr calloc 3 ,
|
|
|
|
and
|
|
|
|
.Xr realloc 3 ) .
|
|
|
|
In this documentatation, the "heap" refers to the Ruby object heap
|
2015-12-24 18:23:46 -05:00
|
|
|
of fixed-sized slots, while "malloc" refers to auxiliary
|
2014-12-15 17:39:33 -05:00
|
|
|
allocations commonly referred to as the "process heap".
|
|
|
|
Thus there are at least two possible ways to trigger GC:
|
|
|
|
.Bl -hang -offset indent
|
|
|
|
.It Sy 1
|
|
|
|
Reaching the object limit.
|
|
|
|
.It Sy 2
|
|
|
|
Reaching the malloc limit.
|
|
|
|
.Pp
|
|
|
|
.El
|
|
|
|
In Ruby 2.1, the generational GC was introduced and the limits are divided
|
|
|
|
into young and old generations, providing two additional ways to trigger
|
|
|
|
a GC:
|
|
|
|
.Bl -hang -offset indent
|
|
|
|
.It Sy 3
|
|
|
|
Reaching the old object limit.
|
|
|
|
.It Sy 4
|
|
|
|
Reaching the old malloc limit.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
There are currently 4 possible areas where the GC may be tuned by
|
2016-01-12 10:37:42 -05:00
|
|
|
the following 11 environment variables:
|
2014-12-15 17:39:33 -05:00
|
|
|
.Bl -hang -compact -width "RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR"
|
|
|
|
.It Ev RUBY_GC_HEAP_INIT_SLOTS
|
|
|
|
Initial allocation slots. Introduced in Ruby 2.1, default: 10000.
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_HEAP_FREE_SLOTS
|
|
|
|
Prepare at least this amount of slots after GC.
|
|
|
|
Allocate this number slots if there are not enough slots.
|
|
|
|
Introduced in Ruby 2.1, default: 4096
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_HEAP_GROWTH_FACTOR
|
|
|
|
Increase allocation rate of heap slots by this factor.
|
|
|
|
Introduced in Ruby 2.1, default: 1.8, minimum: 1.0 (no growth)
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_HEAP_GROWTH_MAX_SLOTS
|
|
|
|
Allocation rate is limited to this number of slots,
|
|
|
|
preventing excessive allocation due to RUBY_GC_HEAP_GROWTH_FACTOR.
|
|
|
|
Introduced in Ruby 2.1, default: 0 (no limit)
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
|
|
|
|
Perform a full GC when the number of old objects is more than R * N,
|
|
|
|
where R is this factor and N is the number of old objects after the
|
|
|
|
last full GC.
|
|
|
|
Introduced in Ruby 2.1.1, default: 2.0
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_MALLOC_LIMIT
|
|
|
|
The initial limit of young generation allocation from the malloc-family.
|
|
|
|
GC will start when this limit is reached.
|
|
|
|
Default: 16MB
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_MALLOC_LIMIT_MAX
|
|
|
|
The maximum limit of young generation allocation from malloc before GC starts.
|
|
|
|
Prevents excessive malloc growth due to RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR.
|
|
|
|
Introduced in Ruby 2.1, default: 32MB.
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR
|
|
|
|
Increases the limit of young generation malloc calls, reducing
|
|
|
|
GC frequency but increasing malloc growth until RUBY_GC_MALLOC_LIMIT_MAX
|
|
|
|
is reached.
|
|
|
|
Introduced in Ruby 2.1, default: 1.4, minimum: 1.0 (no growth)
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_OLDMALLOC_LIMIT
|
|
|
|
The initial limit of old generation allocation from malloc,
|
|
|
|
a full GC will start when this limit is reached.
|
|
|
|
Introduced in Ruby 2.1, default: 16MB
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_OLDMALLOC_LIMIT_MAX
|
|
|
|
The maximum limit of old generation allocation from malloc before a
|
|
|
|
full GC starts.
|
|
|
|
Prevents excessive malloc growth due to RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR.
|
|
|
|
Introduced in Ruby 2.1, default: 128MB
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR
|
|
|
|
Increases the limit of old generation malloc allocation, reducing full
|
|
|
|
GC frequency but increasing malloc growth until RUBY_GC_OLDMALLOC_LIMIT_MAX
|
|
|
|
is reached.
|
|
|
|
Introduced in Ruby 2.1, default: 1.2, minimum: 1.0 (no growth)
|
|
|
|
.Pp
|
|
|
|
.El
|
2014-09-25 16:18:22 -04:00
|
|
|
.Sh STACK SIZE ENVIRONMENT
|
|
|
|
Stack size environment variables are implementation-dependent and
|
|
|
|
subject to change with different versions of Ruby. The VM stack is used
|
|
|
|
for pure-Ruby code and managed by the virtual machine. Machine stack is
|
|
|
|
used by the operating system and its usage is dependent on C extensions
|
|
|
|
as well as C compiler options. Using lower values for these may allow
|
|
|
|
applications to keep more Fibers or Threads running; but increases the
|
|
|
|
chance of SystemStackError exceptions and segmentation faults (SIGSEGV).
|
|
|
|
These environment variables are available since Ruby 2.0.0.
|
|
|
|
All values are specified in bytes.
|
|
|
|
.Pp
|
|
|
|
.Bl -hang -compact -width "RUBY_THREAD_MACHINE_STACK_SIZE"
|
|
|
|
.It Ev RUBY_THREAD_VM_STACK_SIZE
|
|
|
|
VM stack size used at thread creation.
|
|
|
|
default: 131072 (32-bit CPU) or 262144 (64-bit)
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_THREAD_MACHINE_STACK_SIZE
|
|
|
|
Machine stack size used at thread creation.
|
|
|
|
default: 524288 or 1048575
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_FIBER_VM_STACK_SIZE
|
|
|
|
VM stack size used at fiber creation.
|
|
|
|
default: 65536 or 131072
|
|
|
|
.Pp
|
|
|
|
.It Ev RUBY_FIBER_MACHINE_STACK_SIZE
|
|
|
|
Machine stack size used at fiber creation.
|
|
|
|
default: 262144 or 524288
|
|
|
|
.Pp
|
2014-12-15 17:39:33 -05:00
|
|
|
.El
|
2008-10-22 09:23:59 -04:00
|
|
|
.Sh SEE ALSO
|
2016-09-23 07:21:52 -04:00
|
|
|
.Bl -hang -compact -width "https://www.ruby-toolbox.com/"
|
|
|
|
.It Lk https://www.ruby-lang.org/
|
2008-10-22 09:23:59 -04:00
|
|
|
The official web site.
|
2016-09-23 07:21:52 -04:00
|
|
|
.It Lk https://www.ruby-toolbox.com/
|
2013-12-10 04:22:32 -05:00
|
|
|
Comprehensive catalog of Ruby libraries.
|
2008-10-22 09:23:59 -04:00
|
|
|
.El
|
|
|
|
.Pp
|
2008-10-25 11:15:06 -04:00
|
|
|
.Sh REPORTING BUGS
|
2008-10-22 09:23:59 -04:00
|
|
|
.Bl -bullet
|
2017-04-20 03:46:22 -04:00
|
|
|
.It
|
|
|
|
Security vulnerabilities should be reported via an email to
|
|
|
|
.Mt security@ruby-lang.org .
|
|
|
|
Reported problems will be published after being fixed.
|
2008-10-22 09:23:59 -04:00
|
|
|
.Pp
|
2017-04-20 03:46:22 -04:00
|
|
|
.It
|
|
|
|
Other bugs and feature requests can be reported via the
|
2016-09-23 07:21:52 -04:00
|
|
|
Ruby Issue Tracking System
|
|
|
|
.Pq Lk https://bugs.ruby-lang.org/ .
|
2008-10-22 09:23:59 -04:00
|
|
|
Do not report security vulnerabilities
|
2017-04-20 03:46:22 -04:00
|
|
|
via this system because it publishes the vulnerabilities immediately.
|
2008-10-22 09:23:59 -04:00
|
|
|
.El
|
2002-12-30 14:56:06 -05:00
|
|
|
.Sh AUTHORS
|
|
|
|
Ruby is designed and implemented by
|
|
|
|
.An Yukihiro Matsumoto Aq matz@netlab.jp .
|
2009-10-26 02:44:31 -04:00
|
|
|
.Pp
|
2013-03-08 06:16:00 -05:00
|
|
|
See
|
2016-09-23 07:21:52 -04:00
|
|
|
.Aq Lk https://bugs.ruby-lang.org/projects/ruby/wiki/Contributors
|
2013-03-08 06:16:00 -05:00
|
|
|
for contributors to Ruby.
|