A guide to Ruby's stdlib and available alternatives.
Please note: The standard library was turned into gems, see stdgems.org for up-to-date information on all standard gems!
Standard Library Overview
Library | Sources | Description | Alternatives |
---|---|---|---|
abbrev | mri | Small library that finds the shortest abbreviation to identify one string amongst many | - |
base64 | mri | Encodes and decodes strings to a Base64 representation. Implemented as a small wrapper around String#unpack | - |
continuation | mri | Deprecated library that adds the goto-like Kernel#callcc | Concurrent Ruby, Fiber |
coverage c | mri | Measures code coverage | - |
debug | mri | Command-line debugger | byebug |
digest c | mri | Provides common hash functions like MD5, SHA1, SHA2, or RIPEMD-160 | OpenSSL::Digest |
drb | mri | Distributed object system for Ruby | - |
English | mri | Readable aliases for special global variables | - |
erb | mri | Templating engine for Ruby | erubis, erbse, erubi |
expect | mri | Adds IO#expect, which can be used to wait for a specific pattern to be read | - |
fiber c | mri | Adds Fiber#transfer and Fiber#alive? | - |
find | mri | Finds all files in a given directory and its sub-directories | `find .`.split($/) |
io/nonblock c | mri | Allows to work with IO streams in a non-blocking way |
- |
io/wait c | mri | Adds methods to wait until an IO stream becomes readable or writable |
- |
mkmf | mri | Generates Makefiles for native C extensions | - |
monitor | mri | Monitors for multi-threaded code | - |
net/ftp | mri | Support for FTP (File Transfer Protocol) | - |
net/http | mri | Support for HTTP (Hypertext Transfer Protocol) | http.rb, em-http-request, excon, httpclient |
net/imap | mri | Support for IMAP (Internet Message Access Protocol) | em-imap |
nkf c | mri | Kanji encoding converter | - |
objspace c | mri | Adds more statistics methods to ObjectSpace |
- |
open-uri | mri | Monkeypatches Kernel#open to support remote endpoints via net/http and net/ftp |
- |
optparse | mri | Command-line option parser | slop, optimist, clap, rationalist |
pathname c | mri | Wraps File , FileTest , Dir , and FileUtils to ease working with file system paths |
path |
prettyprint | mri | Better object formatting and inspection. Comes with the pp print debugging helper via require 'pp' |
wirb, hirb, awesome_print |
profiler | mri | Measures which methods are called and how long each method takes to complete. Auto-start via require 'profile' |
ruby-prof, perftools.rb, method_profiler |
pty c | mri | Manages pseudo terminals | - |
racc c | mri gem |
A YACC-like LALR(1) parser generator | parslet, citrus, treetop |
rbconfig | - | RbConfig is a Ruby constant that contains compile time information |
- |
resolv | mri | Thread-aware DNS resolver. Will replace Socket's DNS via require 'resolve-replace' |
rubydns, net-dns, em-resolve-replace |
rinda | mri | Support fot the Linda distributed computing paradigm in drb | - |
ripper c | mri | Ruby parser that creates a symbolic expression tree | ruby_parser, parser |
securerandom | mri | Provides crpytographical randomness from openssl or the OS | - |
set | mri | Data structure for unordered collections without duplicates. Implemented on top of Hash. Also comes with SortedSet for ordered collections. | - |
shellwords | mri | Escape and manipulate commands to be run in the shell | - |
socket c | mri | Support for unix- and network sockets | - |
syslog c | mri | Interface to the low-level syslog logger | syslogger, log4r, lumberjack_syslog_device, yell-adapters-syslog |
tempfile | mri | Simplifies OS independent creation of temporary files | - |
time | mri | Adds more methods to Time |
- |
tmpdir | mri | Adds a Dir.mktmpdir method for creating temporary directories OS independently |
- |
tsort | mri | Typological sorting using Tarjan’s algorithm, which finds strongly connected components in graphs | - |
un | mri | Utilities to replace common UNIX commands | - |
unicode_normalize (auto-require) |
mri | Adds a String#unicode_normalize method which normalizes unicode strings | unf, unicode |
weakref | mri | Explicitly allow objects to be garbage collected | ref |
Win32API c | mri | Let's you use Windows APIs, like calling functions in DLLs | win32-api, ffi |
win32ole c | mri | Windows OLE automation interface | - |
Default Gems
These libraries come as default Ruby gems, so that they can be updated independently from Ruby. See stdgems.org for more info.
Gem | Sources | Description | Alternatives |
---|---|---|---|
benchmark | mri gem |
Benchmarking library | benchmark-ips, benchmark-driver |
bigdecimal c | mri gem |
Support for arbitrary-precision floating point decimal arithmetic | - |
bundler | mri gem |
Bundler is the local package manager for Ruby applications | - |
cgi | mri gem |
Support for CGI (Common Gateway Interface) | rack |
csv | mri gem |
Support for CSV (Comma-separated Values) | smarter_csv |
date c | mri gem |
The Date and DateTime classes | - |
dbm c | mri gem |
Support for DBM databases | - |
delegate | mri gem |
Provides three ways to delegate method calls | forwardable |
did_you_mean (auto-require) |
mri gem |
Patches error messages to suggest correct spelling of methods/classes/variables | - |
etc c | mri gem |
Access UNIX info from /etc |
- |
fcntl c | mri gem |
Loads values from the OS' fcntl.h to be used for low-level file descriptor manipulation system calls with IO#fcntl and IO.sysopen |
- |
fiddle c | mri gem |
Support for FFI (Foreign Function Interface) | ffi |
fileutils | mri gem |
Utilities for working with the file system | - |
forwardable | mri gem |
Provides a way to delegate method calls. Also see this overview of delegation in Ruby, which contains an example | - |
gdbm c | mri gem |
Support for GNU dbm databases | - |
getoptlong | mri gem |
GNU getopt_long() style command-line option parsing | OptParse, slop, optimist, clap, rationalist |
io/console c | mri gem |
Patches IO for simple and portable access to the console |
- |
ipaddr | mri gem |
IP address manipulation | ipaddress, ruby-ip |
irb | mri | Interactive Ruby Console (REPL) | ripl, pry, rib |
json c | mri gem |
Support for JSON (JavaScript Object Notation) | oj, yajl-ruby |
logger | mri gem |
Logging utility | log4r, lumberjack, yell, logging, micrologger |
matrix | mri gem |
Support for matrices | nmatrix |
mutex_m | mri gem |
A mixin that makes any object behave like a mutex | - |
observer | mri gem |
Implementation of the observer pattern, a way to let interested other objects know o an object's updates | microevent, signal_lamp |
net/pop | mri gem |
Support for POP3 (Post Office Protocol) | - |
net/smtp | mri gem |
Support for SMTP (Simple Mail Transfer Protocol) | - |
open3 | mri gem |
Simple spawning of child processes | open4 |
openssl c | mri gem |
Wraps OpenSSL for cryptographic functionality | - |
ostruct | mri gem |
Wrapper around Hash that lets you read and set attributes with a method API | Hash, ostruct2 |
prime | mri gem |
Access to prime numbers and prime factorization | - |
pstore | mri gem |
Transactional file storage for Ruby objects | - |
psych c | mri gem |
Support for YAML (YAML Ain't Markup Language) | - |
rdoc | mri gem |
Ruby documentation generator | yard |
readline | mri gem |
If available, readline-ext will be loaded, or (Ruby-only) reline will be used | - |
readline-ext | mri gem |
Interface to GNU Readline and NetBSD Editline | rb-readline, reline |
reline | mri gem |
Ruby-only implementation of GNU Readline / NetBSD Editline | rb-readline |
rexml | mri gem |
Support for XML (Extensible Markup Language) | nokogiri, oga |
rss | mri gem |
Support for RSS (Rich Site Summary) and Atom | - |
rubygems (auto-require) |
mri gem |
Manages Ruby libraries. | - |
sdbm c | mri gem |
Support for SDBM databases | - |
singleton | mri gem |
Mixin for Ruby classes that should only have one instance | - |
stringio c | mri gem |
Makes strings behave like IO objects | - |
strscan c | mri gem |
Lexical string scanning | - |
timeout | mri gem |
Auto-terminates code blocks after the time limit is reached | - |
tracer | mri gem |
Outputs the code execution trace via Kernel#set_trace_func | TracePoint |
uri | mri gem |
URI/URL manipulation | addressable,ruby-uriparser |
webrick | mri gem |
HTTP server | thin, unicorn, puma |
yaml | mri gem |
Loads the psych yaml parser and sets YAML = Psych |
- |
zlib c | mri gem |
Interface to the zlib compression library | - |
Bundled Gems
Gems that will be installed together with Ruby. See stdgems.org for more info.
Gem | Description | Alternatives |
---|---|---|
minitest | Test/spec framework, comes with mocking and benchmark capabilities | rspec |
net-telnet | Support for Telnet | - |
power_assert | Debug tool that displays intermediate results of a method chain | - |
rake | A Ruby task runner, inspired by make | thor, boson |
test-unit | A xUnit family unit testing framework | minitest, rspec |
xmlrpc | Remote Procedure Calls via XML and HTTP | - |
Something's wrong or missing? You can edit this list on GitHub!
Resources
- RDoc: Standard library short descriptions
- RDoc: Standard library maintainers
- About standard library gems
- Standard Gems Data
More Idiosyncratic Ruby
- Please Comment on GitHub
- Next Article: Uniform Resource Matching
- Previous Article: Symbolic Reservations