# ruby/ruby

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ruby-ruby).**

23,497 stars · 5,566 forks · Ruby · other

## Links

- GitHub: https://github.com/ruby/ruby
- Homepage: https://www.ruby-lang.org/
- awesome-repositories: https://awesome-repositories.com/repository/ruby-ruby.md

## Topics

`c` `jit` `language` `object-oriented` `programming-language` `ruby` `ruby-language` `rust`

## Description

Ruby is a general-purpose, dynamic programming language built on an object-oriented runtime environment. It treats every piece of data as an object, ensuring a consistent interface for manipulation across the entire system. The language is designed to support programmer productivity through a focus on natural syntax and flexible metaprogramming capabilities.

The runtime distinguishes itself through a pure object model that allows for dynamic class modification and runtime method definition. It supports functional programming patterns by encapsulating code blocks as objects that capture their surrounding lexical scope, enabling deferred execution and state persistence. Developers can further customize behavior by injecting singleton classes into specific objects or intercepting calls to undefined methods to implement dynamic proxying.

The language provides a comprehensive suite of tools for development and maintenance, including support for static type analysis, keyword arguments, and operator overloading. It features a native interface for integrating low-level code written in C, allowing for performance enhancements and access to system-level features. Additionally, the environment includes built-in support for interactive scripting, task automation, and offline documentation access.

## Tags

### Programming Languages & Runtimes

- [Programming Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages.md) — A high-level, dynamic, object-oriented programming language designed for productivity and flexible metaprogramming.
- [Universal Object Models](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/object-extensions/universal-object-models.md) — Treats every piece of data as an object to ensure a uniform interface for manipulation across the entire system. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [General Purpose Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/programming-languages/language-specific-resources/general-purpose-languages.md) — A versatile general-purpose language used for web development, automation, and data processing.
- [Operator Overloading](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/core-conceptual-frameworks/programming-language-concepts/method-definitions/operator-overloading.md) — Allows developers to define custom behavior for standard arithmetic and comparison operators through method overloading. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Symbolic Identifiers](https://awesome-repositories.com/f/programming-languages-runtimes/symbolic-identifiers.md) — Represent unique identifiers as immutable objects that share memory to optimize performance for keys and labels compared to using standard strings. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Singleton Classes](https://awesome-repositories.com/f/programming-languages-runtimes/class-method-definitions/singleton-classes.md) — Creates hidden, per-instance classes to store unique methods that only apply to a single specific object.
- [Runtime Class Modifications](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/runtime-class-modifications.md) — Allows modifying existing classes at runtime to add or redefine functionality across an application. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Expression-Oriented Evaluation](https://awesome-repositories.com/f/programming-languages-runtimes/expression-oriented-evaluation.md) — Ensures every statement returns a value, allowing code constructs to be used interchangeably within larger expressions. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Dynamic Dispatch](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/language-features/language-extensions/dynamic-dispatch.md) — Resolves method calls at runtime by traversing the inheritance chain.
- [Function Argument Passing](https://awesome-repositories.com/f/programming-languages-runtimes/function-argument-passing.md) — Supports named parameters in method definitions to improve readability and argument flexibility. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Interactive Scripting Environments](https://awesome-repositories.com/f/programming-languages-runtimes/interactive-scripting-environments.md) — Includes built-in support for interactive scripting to facilitate rapid experimentation and testing.
- [Type Annotations](https://awesome-repositories.com/f/programming-languages-runtimes/type-annotations.md) — Supports static type analysis through formal type signatures to improve code clarity and error detection. ([source](https://www.ruby-lang.org/en/documentation/))
- [Expression Sequencing](https://awesome-repositories.com/f/programming-languages-runtimes/expression-sequencing.md) — Evaluates statements as expressions that return values throughout the program.

### Software Engineering & Architecture

- [Dynamic Runtime Environments](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/object-oriented-foundations/dynamic-runtime-environments.md) — Provides an object-oriented runtime environment that supports dynamic class modification and runtime method definition.
- [Object-Oriented Programming](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/object-oriented-foundations/object-oriented-programming.md) — Supports dynamic object-oriented programming with runtime class modification and method definition.
- [Closures](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/design-patterns/functional-design-patterns/functional-programming/closures.md) — Encapsulates code blocks as objects that capture lexical scope to enable functional programming patterns.
- [Functional Programming](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/design-patterns/functional-design-patterns/functional-programming.md) — Enables functional programming patterns through closures and blocks for expressive data collection processing.
- [Pure Object Models](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/object-oriented-foundations/inheritance-mechanisms/object-inheritance/pure-object-models.md) — Ensures consistent behavior by treating every piece of data as an object inheriting from a common root.
- [Error Handling](https://awesome-repositories.com/f/software-engineering-architecture/error-handling.md) — Intercepts calls to undefined methods to implement dynamic behavior and custom error handling. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))
- [Module Organization Patterns](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/foundational-theory-and-guidance/software-architecture-principles/module-organization-patterns.md) — Organizes code into modules to group related methods and constants under shared namespaces. ([source](https://www.ruby-lang.org/en/documentation/quickstart/))
- [Naming Conventions](https://awesome-repositories.com/f/software-engineering-architecture/development-methodologies/engineering-best-practices/code-craftsmanship-standards/coding-standards/naming-conventions.md) — Uses expressive naming conventions with punctuation to indicate method purpose, such as boolean queries or destructive operations. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))

### Development Tools & Productivity

- [C Extension Interfaces](https://awesome-repositories.com/f/development-tools-productivity/compilers-toolchains/c-extension-interfaces.md) — Provides a native interface for integrating low-level C code to enhance performance and access system-level features.
- [Code Execution Environments](https://awesome-repositories.com/f/development-tools-productivity/code-execution-environments.md) — Provides an interactive shell environment for executing code snippets and experimenting with language features. ([source](https://www.ruby-lang.org/en/documentation/))
- [Build Automation](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-tools/build-task-automation/build-automation.md) — Includes a structured task runner for automating build, testing, and deployment workflows. ([source](https://www.ruby-lang.org/en/documentation/))

### Web Development

- [Method Missing Hooks](https://awesome-repositories.com/f/web-development/proxy-based-reactivity/proxy-self-injection/method-interceptors/method-missing-hooks.md) — Intercepts calls to undefined methods to implement dynamic proxying and flexible API design.
- [Instance Method Extensions](https://awesome-repositories.com/f/web-development/instance-management/instance-method-extensions.md) — Allows attaching unique methods to specific object instances to customize behavior. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))

### Data & Databases

- [Collection Iterators](https://awesome-repositories.com/f/data-databases/collection-iterators.md) — Provides flexible iterators for traversing data structures as an alternative to traditional loops. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))

### Security & Cryptography

- [Access Modifiers](https://awesome-repositories.com/f/security-cryptography/security/policies/access-control/method-interceptors/access-modifiers.md) — Applies access modifiers to define scope and restrict method calls based on internal logic. ([source](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/))

### Testing & Quality Assurance

- [Static Code Analysis Tools](https://awesome-repositories.com/f/testing-quality-assurance/code-quality-review/code-quality-tools/static-code-analysis-tools.md) — Supports static analysis to identify type inconsistencies and structural improvements without execution. ([source](https://www.ruby-lang.org/en/documentation/))
