summaryrefslogtreecommitdiff
path: root/doc/standard_library.rdoc
blob: a9fca632f8d2af085925836f5e4b3878553bc0e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
= Ruby Standard Library

The Ruby Standard Library is a vast collection of classes and modules that you
can require in your code for additional features.

Below is an overview of libraries and extensions followed by a brief
description.

== Libraries

MakeMakefile:: Module used to generate a Makefile for C extensions
RbConfig:: Information of your configure and build of Ruby
Gem:: Package management framework for Ruby

== Extensions

Coverage:: Provides coverage measurement for Ruby
Monitor:: Provides an object or module to use safely by more than one thread
objspace:: Extends ObjectSpace module to add methods for internal statistics
PTY:: Creates and manages pseudo terminals
Ripper:: Provides an interface for parsing Ruby programs into S-expressions
Socket:: Access underlying OS socket implementations

= Default gems

* default gems are shipped with Ruby releases and also available as rubygems.
* default gems are not uninstallable from Ruby installation.
* default gems can be updated used by rubygems.
    * e.g. `gem update json`
* default gems can be used with bundler environment like `unbundled_env`.
* default gems can be used any version on Gemfile.
    * e.g. `gem "json", ">= 2.6"`

== Libraries

Benchmark:: Provides methods to measure and report the time used to execute code
Bundler:: Manage your Ruby application's gem dependencies
CGI:: Support for the Common Gateway Interface protocol
Delegator:: Provides three abilities to delegate method calls to an object
DidYouMean:: "Did you mean?" experience in Ruby
English:: Provides references to special global variables with less cryptic names
ERB:: An easy to use but powerful templating system for Ruby
ErrorHighlight:: Highlight error location in your code
FileUtils:: Several file utility methods for copying, moving, removing, etc
Find:: This module supports top-down traversal of a set of file paths
Forwardable:: Provides delegation of specified methods to a designated object
IPAddr:: Provides methods to manipulate IPv4 and IPv6 IP addresses
IRB:: Interactive Ruby command-line tool for REPL (Read Eval Print Loop)
OptionParser:: Ruby-oriented class for command-line option analysis
Logger:: Provides a simple logging utility for outputting messages
Net::HTTP:: HTTP client api for Ruby
Open3:: Provides access to stdin, stdout and stderr when running other programs
OpenStruct:: Class to build custom data structures, similar to a Hash
OpenURI:: An easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP
PP:: Provides a PrettyPrinter for Ruby objects
PrettyPrinter:: Implements a pretty printing algorithm for readable structure
Prism:: A portable, error-tolerant Ruby parser
PStore:: Implements a file based persistence mechanism based on a Hash
Readline:: Wrapper for Readline extencion and Reline
Reline:: GNU Readline and Editline by pure Ruby implementation.
Resolv::  Thread-aware DNS resolver library in Ruby
RDoc:: Produces HTML and command-line documentation for Ruby
SecureRandom:: Interface for secure random number generator
Set:: Provides a class to deal with collections of unordered, unique values
Shellwords:: Manipulates strings with word parsing rules of UNIX Bourne shell
Singleton:: Implementation of the Singleton pattern for Ruby
Tempfile:: A utility class for managing temporary files
Time:: Extends the Time class with methods for parsing and conversion
Timeout:: Auto-terminate potentially long-running operations in Ruby
tmpdir.rb:: Extends the Dir class to manage the OS temporary file path
TSort:: Topological sorting using Tarjan's algorithm
un.rb:: Utilities to replace common UNIX commands
URI:: A Ruby module providing support for Uniform Resource Identifiers
YAML:: Ruby client library for the Psych YAML implementation
WeakRef:: Allows a referenced object to be garbage-collected

== Extensions

Date:: A subclass of Object includes Comparable module for handling dates
DateTime:: Subclass of Date to handling dates, hours, minutes, seconds, offsets
Digest:: Provides a framework for message digest libraries
Etc:: Provides access to information typically stored in UNIX /etc directory
Fcntl:: Loads constants defined in the OS fcntl.h C header file
Fiddle:: A libffi wrapper for Ruby
IO:: Extensions for Ruby IO class, including #wait, #nonblock and ::console
JSON:: Implements Javascript Object Notation for Ruby
OpenSSL:: Provides SSL, TLS and general purpose cryptography for Ruby
Pathname:: Representation of the name of a file or directory on the filesystem
Psych:: A YAML parser and emitter for Ruby
StringIO:: Pseudo I/O on String objects
StringScanner:: Provides lexical scanning operations on a String
WIN32OLE:: Provides an interface for OLE Automation in Ruby
Zlib:: Ruby interface for the zlib compression/decompression library

= Bundled gems

* bundled gems are shipped with Ruby releases and also available as rubygems.
* bundled gems are same as normal gems like `rails`, `rack`.
    * They are only bundled with Ruby releases.
    * They can be uninstallable from Ruby installation.
    * They are needed to declare in Gemfile when use with bundler.

== Libraries

MiniTest:: A test suite with TDD, BDD, mocking and benchmarking
PowerAssert:: Power Assert for Ruby.
Rake:: Ruby build program with capabilities similar to make
Test::Unit:: A compatibility layer for MiniTest
REXML:: An XML toolkit for Ruby
RSS:: Family of libraries that support various formats of XML "feeds"
Net::FTP:: Support for the File Transfer Protocol
Net::IMAP:: Ruby client api for Internet Message Access Protocol
Net::POP3:: Ruby client library for POP3
Net::SMTP:: Simple Mail Transfer Protocol client library for Ruby
Matrix:: Represents a mathematical matrix.
Prime:: Prime numbers and factorization library
RBS:: RBS is a language to describe the structure of Ruby programs
TypeProf:: A type analysis tool for Ruby code based on abstract interpretation
DEBUGGER__:: Debugging functionality for Ruby
Racc:: A LALR(1) parser generator written in Ruby.
Mutex_m:: Mixin to extend objects to be handled like a Mutex
GetoptLong:: Parse command line options similar to the GNU C getopt_long()
Base64:: Support for encoding and decoding binary data using a Base64 representation
BigDecimal:: Provides arbitrary-precision floating point decimal arithmetic
Observable:: Provides a mechanism for publish/subscribe pattern in Ruby
Abbrev:: Calculates a set of unique abbreviations for a given set of strings
resolv-replace.rb:: Replace Socket DNS with Resolv
Rinda:: The Linda distributed computing paradigm in Ruby
DRb:: Distributed object system for Ruby
NKF:: Ruby extension for Network Kanji Filter
Syslog:: Ruby interface for the POSIX system logging facility
CSV:: Provides an interface to read and write CSV files and data