Returns the current backtrace of the target thread.
Dump the name, id, and status of thr to a string.
Returns an array of all existing Thread
objects that belong to this group.
ThreadGroup::Default.list #=> [#<Thread:0x401bdf4c run>]
Wakes up all threads waiting for this lock.
Returns the length of the queue.
Returns the length of the queue.
Return a string containing a human-readable TracePoint
status.
Returns internal information of TracePoint
.
The contents of the returned value are implementation specific. It may be changed in future.
This method is only for debugging TracePoint
itself.
Document-method: trace
A convenience method for TracePoint.new, that activates the trace automatically. trace = TracePoint.trace(:call) { |tp| [tp.lineno, tp.event] } #=> #<TracePoint:enabled> trace.enabled? #=> true
Line number of the event
Uses the character cmd
to perform various tests on file1
(first table below) or on file1
and file2
(second table).
File
tests on a single file:
Cmd Returns Meaning "A" | Time | Last access time for file1 "b" | boolean | True if file1 is a block device "c" | boolean | True if file1 is a character device "C" | Time | Last change time for file1 "d" | boolean | True if file1 exists and is a directory "e" | boolean | True if file1 exists "f" | boolean | True if file1 exists and is a regular file "g" | boolean | True if file1 has the \CF{setgid} bit | | set (false under NT) "G" | boolean | True if file1 exists and has a group | | ownership equal to the caller's group "k" | boolean | True if file1 exists and has the sticky bit set "l" | boolean | True if file1 exists and is a symbolic link "M" | Time | Last modification time for file1 "o" | boolean | True if file1 exists and is owned by | | the caller's effective uid "O" | boolean | True if file1 exists and is owned by | | the caller's real uid "p" | boolean | True if file1 exists and is a fifo "r" | boolean | True if file1 is readable by the effective | | uid/gid of the caller "R" | boolean | True if file is readable by the real | | uid/gid of the caller "s" | int/nil | If file1 has nonzero size, return the size, | | otherwise return nil "S" | boolean | True if file1 exists and is a socket "u" | boolean | True if file1 has the setuid bit set "w" | boolean | True if file1 exists and is writable by | | the effective uid/gid "W" | boolean | True if file1 exists and is writable by | | the real uid/gid "x" | boolean | True if file1 exists and is executable by | | the effective uid/gid "X" | boolean | True if file1 exists and is executable by | | the real uid/gid "z" | boolean | True if file1 exists and has a zero length
Tests that take two files:
"-" | boolean | True if file1 and file2 are identical "=" | boolean | True if the modification times of file1 | | and file2 are equal "<" | boolean | True if the modification time of file1 | | is prior to that of file2 ">" | boolean | True if the modification time of file1 | | is after that of file2
Equivalent to Kernel::gets, except readline
raises EOFError
at end of file.
Returns an array containing the lines returned by calling Kernel.gets(sep)
until the end of file.
Returns uri
converted to an URI
object.
Returns uri
converted to an URI
object.
Converts arg to an Integer
. Numeric
types are converted directly (with floating point numbers being truncated). base (0, or between 2 and 36) is a base for integer string representation. If arg is a String
, when base is omitted or equals zero, radix indicators (0
, 0b
, and 0x
) are honored. In any case, strings should be strictly conformed to numeric representation. This behavior is different from that of String#to_i
. Non string values will be converted by first trying to_int
, then to_i
.
Passing nil
raises a TypeError
, while passing a String
that does not conform with numeric representation raises an ArgumentError
. This behavior can be altered by passing exception: false
, in this case a not convertible value will return nil
.
Integer(123.999) #=> 123 Integer("0x1a") #=> 26 Integer(Time.new) #=> 1204973019 Integer("0930", 10) #=> 930 Integer("111", 2) #=> 7 Integer(nil) #=> TypeError: can't convert nil into Integer Integer("x") #=> ArgumentError: invalid value for Integer(): "x" Integer("x", exception: false) #=> nil
Executes command… in a subshell. command… is one of following forms.
commandline
command line string which is passed to the standard shell
cmdname, arg1, ...
command name and one or more arguments (no shell)
[cmdname, argv0], arg1, ...
command name, argv[0]
and zero or more arguments (no shell)
system returns true
if the command gives zero exit status, false
for non zero exit status. Returns nil
if command execution fails. An error status is available in $?
.
If the exception: true
argument is passed, the method raises an exception instead of returning false
or nil
.
The arguments are processed in the same way as for Kernel#spawn
.
The hash arguments, env and options, are same as exec
and spawn
. See Kernel#spawn
for details.
system("echo *") system("echo", "*")
produces:
config.h main.rb *
Error
handling:
system("cat nonexistent.txt") # => false system("catt nonexistent.txt") # => nil system("cat nonexistent.txt", exception: true) # RuntimeError (Command failed with exit 1: cat) system("catt nonexistent.txt", exception: true) # Errno::ENOENT (No such file or directory - catt)
See Kernel#exec
for the standard shell.
Specifies the handling of signals. The first parameter is a signal name (a string such as “SIGALRM”, “SIGUSR1”, and so on) or a signal number. The characters “SIG” may be omitted from the signal name. The command or block specifies code to be run when the signal is raised. If the command is the string “IGNORE” or “SIG_IGN”, the signal will be ignored. If the command is “DEFAULT” or “SIG_DFL”, the Ruby’s default handler will be invoked. If the command is “EXIT”, the script will be terminated by the signal. If the command is “SYSTEM_DEFAULT”, the operating system’s default handler will be invoked. Otherwise, the given command or block will be run. The special signal name “EXIT” or signal number zero will be invoked just prior to program termination. trap returns the previous handler for the given signal.
Signal.trap(0, proc { puts "Terminating: #{$$}" }) Signal.trap("CLD") { puts "Child died" } fork && Process.wait
produces:
Terminating: 27461 Child died Terminating: 27460
Passes each entry in enum to block. Returns the first for which block is not false. If no object matches, calls ifnone and returns its result when it is specified, or returns nil
otherwise.
If no block is given, an enumerator is returned instead.
(1..100).detect #=> #<Enumerator: 1..100:detect> (1..100).find #=> #<Enumerator: 1..100:find> (1..10).detect { |i| i % 5 == 0 && i % 7 == 0 } #=> nil (1..10).find { |i| i % 5 == 0 && i % 7 == 0 } #=> nil (1..10).detect(-> {0}) { |i| i % 5 == 0 && i % 7 == 0 } #=> 0 (1..10).find(-> {0}) { |i| i % 5 == 0 && i % 7 == 0 } #=> 0 (1..100).detect { |i| i % 5 == 0 && i % 7 == 0 } #=> 35 (1..100).find { |i| i % 5 == 0 && i % 7 == 0 } #=> 35
Combines all elements of enum by applying a binary operation, specified by a block or a symbol that names a method or operator.
The inject and reduce methods are aliases. There is no performance benefit to either.
If you specify a block, then for each element in enum the block is passed an accumulator value (memo) and the element. If you specify a symbol instead, then each element in the collection will be passed to the named method of memo. In either case, the result becomes the new value for memo. At the end of the iteration, the final value of memo is the return value for the method.
If you do not explicitly specify an initial value for memo, then the first element of collection is used as the initial value of memo.
# Sum some numbers (5..10).reduce(:+) #=> 45 # Same using a block and inject (5..10).inject { |sum, n| sum + n } #=> 45 # Multiply some numbers (5..10).reduce(1, :*) #=> 151200 # Same using a block (5..10).inject(1) { |product, n| product * n } #=> 151200 # find the longest word longest = %w{ cat sheep bear }.inject do |memo, word| memo.length > word.length ? memo : word end longest #=> "sheep"
Returns the first element, or the first n
elements, of the enumerable. If the enumerable is empty, the first form returns nil
, and the second form returns an empty array.
%w[foo bar baz].first #=> "foo" %w[foo bar baz].first(2) #=> ["foo", "bar"] %w[foo bar baz].first(10) #=> ["foo", "bar", "baz"] [].first #=> nil [].first(10) #=> []
Returns the object in enum with the minimum value. The first form assumes all objects implement Comparable
; the second uses the block to return a <=> b.
a = %w(albatross dog horse) a.min #=> "albatross" a.min { |a, b| a.length <=> b.length } #=> "dog"
If the n
argument is given, minimum n
elements are returned as a sorted array.
a = %w[albatross dog horse] a.min(2) #=> ["albatross", "dog"] a.min(2) {|a, b| a.length <=> b.length } #=> ["dog", "horse"] [5, 1, 3, 4, 2].min(3) #=> [1, 2, 3]
Returns a two element array which contains the minimum and the maximum value in the enumerable. The first form assumes all objects implement Comparable
; the second uses the block to return a <=> b.
a = %w(albatross dog horse) a.minmax #=> ["albatross", "horse"] a.minmax { |a, b| a.length <=> b.length } #=> ["dog", "albatross"]
Returns true
if any member of enum equals obj. Equality is tested using ==
.
(1..10).include? 5 #=> true (1..10).include? 15 #=> false (1..10).member? 5 #=> true (1..10).member? 15 #=> false
Returns an enumerator object generated from this enumerator and given enumerables.
e = (1..3).chain([4, 5]) e.to_a #=> [1, 2, 3, 4, 5]