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 extensionsRbConfig
: Information about your Ruby configuration and buildGem
: A package management framework for Ruby
Extensions
Coverage
: Provides coverage measurement for RubyMonitor
: Provides a reentrant mutexobjspace
: Extends the ObjectSpace module to add methods for internal statisticsPTY
: Creates and manages pseudo-terminalsRipper
: Provides an interface for parsing Ruby programs into S-expressionsSocket
: 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
- e.g.
- 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"
- e.g.
Libraries
- Benchmark (GitHub): Provides methods to measure and report the time used to execute code
- Bundler (GitHub): Manage your Ruby application's gem dependencies
- CGI (GitHub): Support for the Common Gateway Interface protocol
- 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
- Logger (GitHub): Provides a simple logging utility for outputting messages
- Net::HTTP (GitHub): HTTP client API for Ruby
- Open3 (GitHub): Provides access to stdin, stdout, and stderr when running other programs
- OpenStruct (GitHub): A class to build custom data structures, similar to a Hash
- 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
- PStore (GitHub): Implements a file-based persistence mechanism based on a Hash
- Readline (GitHub): Wrapper for the Readline extension and Reline
- Reline (GitHub): GNU Readline and Editline in a pure Ruby implementation
- Resolv (GitHub): Thread-aware DNS resolver library in Ruby
- SecureRandom (GitHub): Interface for a secure random number generator
- Set (GitHub): Provides a class to deal with collections of unordered, unique values
- 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
- 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
- Fiddle (GitHub): A libffi wrapper for Ruby
- IO.console (GitHub): Extensions for the IO class, including
IO.console
,IO.winsize
, etc. - 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
- TmpDir (GitHub): Extends the Dir class to manage the OS temporary file path
- WIN32OLE (GitHub): Provides an interface for OLE Automation in Ruby
- Zlib (GitHub): Ruby interface for the zlib compression/decompression library
Tools
- IRB (GitHub): Interactive Ruby command-line tool for REPL (Read Eval Print Loop)
- RDoc (GitHub): Documentation generator for Ruby
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: Ruby build program with capabilities similar to make
- test-unit: A compatibility layer for MiniTest
- rexml: 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: 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: Provides an interface to read and write CSV files and data