Skip to content

Files

Latest commit

 

History

History
219 lines (199 loc) · 11 KB

standard_library.md

File metadata and controls

219 lines (199 loc) · 11 KB

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
  • 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
  • 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
  • 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
  • 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
  • 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: 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
  • 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: 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: 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