🔍

No recent searches

# Ruby Standard Library

The Ruby Standard Library is a large collection of classes and modules you can require in your code to gain additional features.

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

## Libraries

- `MakeMakefile`: A module used to generate a Makefile for C extensions

- `RbConfig`: Information about your Ruby configuration and build

- `Gem`: A package management framework for Ruby

## Extensions

- `Coverage`: Provides coverage measurement for Ruby

- `Monitor`: Provides a reentrant mutex

- `objspace`: Extends the `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`: Accesses underlying OS socket implementations

# Default gems

- Default gems are shipped with Ruby releases and also available as rubygems.

- Default gems are not uninstallable from the Ruby installation.

- Default gems can be updated using rubygems.

  - e.g. `gem update json`

- Default gems can be used with bundler environments like `unbundled_env`.

- Default gems can be used at any version in a Gemfile.

  - e.g. `gem "json", ">= 2.6"`

## Libraries

- `Bundler` (GitHub): Manage your Ruby application’s gem dependencies

- `Delegator` (GitHub): Provides three abilities to delegate method calls to an object

- `DidYouMean` (GitHub): “Did you mean?” experience in Ruby

- `English` (GitHub): Provides references to special global variables with less cryptic names

- `ERB` (GitHub): An easy-to-use but powerful templating system for Ruby

- `ErrorHighlight` (GitHub): Highlight error locations in your code

- `FileUtils` (GitHub): Several file utility methods for copying, moving, removing, etc.

- `Find` (GitHub): This module supports top-down traversal of a set of file paths

- `Forwardable` (GitHub): Provides delegation of specified methods to a designated object

- `IPAddr` (GitHub): Provides methods to manipulate IPv4 and IPv6 IP addresses

- `OptionParser` (GitHub): Ruby-oriented class for command-line option analysis

- `Net::HTTP` (GitHub): HTTP client API for Ruby

- `Open3` (GitHub): Provides access to stdin, stdout, and stderr when running other programs

- `OpenURI` (GitHub): An easy-to-use wrapper for `URI::HTTP`, `URI::HTTPS`, and `URI::FTP`

- `PP` (GitHub): Provides a PrettyPrinter for Ruby objects

- `PrettyPrint` (GitHub): Implements a pretty printing algorithm for readable structure

- `Prism` (GitHub): A portable, error-tolerant Ruby parser

- `Resolv` (GitHub): Thread-aware DNS resolver library in Ruby

- `SecureRandom` (GitHub): Interface for a secure random number generator

- `Shellwords` (GitHub): Manipulates strings with the word parsing rules of the UNIX Bourne shell

- `Singleton` (GitHub): Implementation of the `Singleton` pattern for Ruby

- `Tempfile` (GitHub): A utility class for managing temporary files

- `Time` (GitHub): Extends the `Time` class with methods for parsing and conversion

- `Timeout` (GitHub): Auto-terminate potentially long-running operations in Ruby

- TmpDir (GitHub): Extends the `Dir` class to manage the OS temporary file path

- `TSort` (GitHub): Topological sorting using Tarjan’s algorithm

- UN (GitHub): Utilities to replace common UNIX commands

- `URI` (GitHub): A Ruby module providing support for Uniform Resource Identifiers

- `YAML` (GitHub): The Ruby client library for the `Psych` `YAML` implementation

- `WeakRef` (GitHub): Allows a referenced object to be garbage-collected

## Extensions

- `Date` (GitHub): Represents dates, with a subclass for dates with time and timezones

- `Digest` (GitHub): Provides a framework for message digest libraries

- `Etc` (GitHub): Provides access to information typically stored in the UNIX /etc directory

- `Fcntl` (GitHub): Loads constants defined in the OS fcntl.h C header file

- `IO.console` (GitHub): Extensions for the `IO` class, including `IO.console`, `IO.winsize`, etc.

- `IO#nonblock` (GitHub): Enable non-blocking mode with `IO` class.

- `IO#wait` (GitHub): Provides the feature for waiting until `IO` is readable or writable without blocking.

- `JSON` (GitHub): Implements JavaScript `Object` Notation for Ruby

- `OpenSSL` (GitHub): Provides SSL, TLS, and general-purpose cryptography for Ruby

- `Pathname` (GitHub): Representation of the name of a file or directory on the filesystem

- `Psych` (GitHub): A `YAML` parser and emitter for Ruby

- `StringIO` (GitHub): Pseudo-I/O on `String` objects

- `StringScanner` (GitHub): Provides lexical scanning operations on a `String`

- `Zlib` (GitHub): Ruby interface for the zlib compression/decompression library

# Bundled gems

- Bundled gems are shipped with Ruby releases and also available as rubygems.

  - They are only bundled with Ruby releases.

  - They can be uninstalled from the Ruby installation.

  - They need to be declared in a Gemfile when used with bundler.

## Libraries

- minitest: A test library supporting TDD, BDD, mocking, and benchmarking

- power_assert: Power Assert for Ruby

- rake (GitHub): Ruby build program with capabilities similar to make

- test-unit: A compatibility layer for MiniTest

- rexml (GitHub): An XML toolkit for Ruby

- rss: A family of libraries supporting various XML-based “feeds”

- net-ftp: Support for the `File` Transfer Protocol

- net-imap: Ruby client API for the Internet Message Access Protocol

- net-pop: 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

- debug: Debugging functionality for Ruby

- racc (GitHub): 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

- observer: Provides a mechanism for the publish/subscribe pattern in Ruby

- abbrev: Calculates a set of unique abbreviations for a given set of strings

- resolv-replace: Replace `Socket` DNS with `Resolv`

- rinda: The Linda distributed computing paradigm in Ruby

- drb: Distributed object system for Ruby

- nkf: Ruby extension for the Network Kanji Filter

- syslog: Ruby interface for the POSIX system logging facility

- csv (GitHub): Provides an interface to read and write CSV files and data

- ostruct: A class to build custom data structures, similar to a `Hash`

- benchmark: Provides methods to measure and report the time used to execute code

- logger (GitHub): Provides a simple logging utility for outputting messages

- pstore: Implements a file-based persistence mechanism based on a `Hash`

- win32ole: Provides an interface for OLE Automation in Ruby

- reline (GitHub): GNU Readline and Editline in a pure Ruby implementation

- readline: Wrapper for the Readline extension and Reline

- fiddle: A libffi wrapper for Ruby

## Tools

- IRB (GitHub): Interactive Ruby command-line tool for REPL (Read Eval Print Loop)

- RDoc (GitHub): Documentation generator for Ruby