mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
9b383bd6cf
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
351 lines
9.2 KiB
Groff
351 lines
9.2 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 F Ar pattern
|
|
.Op Fl I Ar directory
|
|
.Op Fl K Ar c
|
|
.Op Fl T 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 -
|
|
.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
|
|
Causes Ruby to switch to the directory.
|
|
.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 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.
|
|
.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 .
|