# rubygems/bundler

**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/rubygems-bundler).**

4,887 stars · 1,976 forks · Ruby · mit · archived

## Links

- GitHub: https://github.com/rubygems/bundler
- Homepage: https://bundler.io
- awesome-repositories: https://awesome-repositories.com/repository/rubygems-bundler.md

## Topics

`dependency-manager` `ruby` `rubygems`

## Description

Bundler is a Ruby dependency manager that resolves gem versions and locks them in a lockfile so every machine installs the same set of dependencies. It manages package sources, provides environment diagnostics, and wraps commands and consoles to run inside a consistent gem context, preventing version mismatches across development, testing, and production.

Unlike a simple package installer, Bundler uses a SAT solver to find a consistent set of gem versions satisfying all constraints, segregates authentication secrets from source URLs, and enforces platform-specific dependency filtering. Its lock file freezes exact versions as the source of truth, and the CLI supports running arbitrary commands within the resolved dependency context, starting a console with all gems pre-loaded, generating wrapper scripts and standalone executables, scaffolding new projects, and inspecting package inventory and compatibility.

The tool also offers extensive configuration and extension capabilities: custom build flags for native extensions, configurable cache and plugin directories, source mirrors with fallback timeouts, private source credential storage, and remote repository overrides. Diagnostic commands check runtime environment, SSL connectivity, and common dependency problems, while dependency management covers adding, removing, updating, grouping by environment, caching offline, verifying consistency, and cleaning up unused packages.

Bundler is distributed as a Ruby gem and invoked from the command line. Its documentation covers installation, configuration, and the full command reference.

## Tags

### Development Tools & Productivity

- [Dependency Installers](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/dependency-installers.md) — Downloads and installs every gem recorded in the lockfile, readying the project with one command. ([source](https://bundler.io/))
- [Dependency Version Managers](https://awesome-repositories.com/f/development-tools-productivity/dependency-removers/dependency-version-managers.md) — Resolves and installs Ruby gem dependencies with version locking for consistent environments.
- [Lock Files](https://awesome-repositories.com/f/development-tools-productivity/lock-files.md) — Freezes exact dependency versions into a lockfile for reproducible installations across environments.
- [Dependency-Context Command Runners](https://awesome-repositories.com/f/development-tools-productivity/context-aware-environment-managers/command-execution-contexts/dependency-context-command-runners.md) — Makes all gems from the dependency set available when running commands, ensuring consistent versions. ([source](https://bundler.io/man/bundle-exec.1.html))
- [Platform-Specific Restrictions](https://awesome-repositories.com/f/development-tools-productivity/cross-platform-package-managers/platform-specific-restrictions.md) — Restricts gem installation to specific operating systems or runtimes declared in the manifest. ([source](https://bundler.io/man/gemfile.5.html))
- [Dependency Verification](https://awesome-repositories.com/f/development-tools-productivity/dependency-configuration-tools/dependency-verification.md) — Bundler checks that every dependency declared in the project's manifest is present and synchronizes the lock file when installed versions satisfy constraints. ([source](https://bundler.io/man/bundle-check.1.html))
- [Dependency Lock Managers](https://awesome-repositories.com/f/development-tools-productivity/dependency-lock-managers.md) — Bundler installs all required dependencies and records their exact versions in a lock file, then reuses that file to ensure consistency across all environments. ([source](https://bundler.io/man/bundle-install.1.html))
- [Manifest-Based Additions](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/dependency-installers/manifest-based-additions.md) — Bundler adds a named package to the project's dependency manifest and installs it unless installation is explicitly skipped. ([source](https://bundler.io/man/bundle-add.1.html))
- [Project Lockfile Management](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/project-lockfile-management.md) — Locks exact gem versions in a lockfile so every machine installs the same set.
- [Lock File Updates](https://awesome-repositories.com/f/development-tools-productivity/lock-files/lock-file-updates.md) — Bundler creates or updates the lock file without installing packages, freezing dependency versions for consistent resolution across environments. ([source](https://bundler.io/man/bundle-lock.1.html))
- [Dependency State Inspections](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-managers/dependency-state-inspections.md) — Bundler checks whether all required packages are installed and up-to-date, and reports any issues or outdated packages. ([source](https://bundler.io/man/bundle.1.html))
- [Manifest Editors](https://awesome-repositories.com/f/development-tools-productivity/package-manifests/manifest-editors.md) — Removes a named package from the manifest while validating that it exists and resolving the remaining dependency graph. ([source](https://bundler.io/man/bundle-remove.1.html))
- [Package Sources](https://awesome-repositories.com/f/development-tools-productivity/package-sources.md) — Pulls gems from rubygems.org, private servers, git repos, or local paths as declared in the manifest. ([source](https://bundler.io/man/gemfile.5.html))
- [Ruby Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/ruby-dependency-managers.md) — Resolves and installs Ruby gem dependencies with version locking for reproducible environments.
- [Runtime Version Checkers](https://awesome-repositories.com/f/development-tools-productivity/runtime-version-checkers.md) — Checks that the local Ruby runtime meets the version declared in the manifest and fails early if not. ([source](https://bundler.io/man/gemfile.5.html))
- [External Plugin Dispatchers](https://awesome-repositories.com/f/development-tools-productivity/cli-command-dispatchers/external-plugin-dispatchers.md) — Bundler dispatches unrecognized commands to an external plugin executable, enabling custom extensions. ([source](https://bundler.io/man/bundle.1.html))
- [Dependency Management Configurations](https://awesome-repositories.com/f/development-tools-productivity/dependency-management-configurations.md) — Bundler reads and writes configuration settings that control how dependencies are installed and resolved. ([source](https://bundler.io/man/bundle.1.html))
- [Versioned Package Wrapper Generators](https://awesome-repositories.com/f/development-tools-productivity/installation-scripts/script-to-executable-compilers/script-wrappers/versioned-package-wrapper-generators.md) — Generates wrapper scripts that run the correct locked gem version without requiring a command prefix. ([source](https://bundler.io/man/bundle-binstubs.1.html))
- [Dependency-Loaded Interactive Consoles](https://awesome-repositories.com/f/development-tools-productivity/interactive-debug-consoles/dependency-loaded-interactive-consoles.md) — Starts an interactive console session that pre-loads all gems from the current dependency set. ([source](https://bundler.io/man/bundle-console.1.html))
- [Local Dependency Caching](https://awesome-repositories.com/f/development-tools-productivity/local-dependency-caching.md) — Bundler copies all required dependencies into a local cache so future installs use cached files instead of downloading from remote sources. ([source](https://bundler.io/man/bundle-cache.1.html))
- [Manifest Generators](https://awesome-repositories.com/f/development-tools-productivity/manifest-driven-dependency-managers/manifest-generators.md) — Bundler generates a default dependency manifest file in the current directory, optionally seeding it with dependencies from an existing package specification. ([source](https://bundler.io/man/bundle-init.1.html))
- [Development Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-management/development-dependency-management.md) — Bundler loads runtime and development dependencies from a package specification file into the dependency manifest for local package development. ([source](https://bundler.io/man/gemfile.5.html))
- [Offline Package Caching](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-managers/offline-package-caching.md) — Bundler copies all required package files into a local directory so they can be installed without network access. ([source](https://bundler.io/man/bundle.1.html))
- [Unused Package Identification](https://awesome-repositories.com/f/development-tools-productivity/package-removal-utilities/dependency-aware-removal/unused-package-identification.md) — Removes cached gems no longer referenced by the lockfile to free disk space. ([source](https://bundler.io/man/bundle-clean.1.html))
- [Private Repository Authentication](https://awesome-repositories.com/f/development-tools-productivity/private-repository-authentication.md) — Stores and redacts credentials for private gem servers, securing dependency fetching.
- [Cross-Platform Lock Files](https://awesome-repositories.com/f/development-tools-productivity/reproducible-build-environments/deterministic-dependency-locking/cross-platform-lock-files.md) — Adds a new OS or runtime platform to the lockfile and re-resolves dependencies for cross-platform support. ([source](https://bundler.io/man/bundle-lock.1.html))
- [Package Metadata Inspectors](https://awesome-repositories.com/f/development-tools-productivity/software-package-repositories/system-package-managers/package-inventory-inspection/package-metadata-inspectors.md) — Displays detailed metadata for any single gem in the dependency set on demand. ([source](https://bundler.io/man/bundle-info.1.html))

### DevOps & Infrastructure

- [Native Gem Installers](https://awesome-repositories.com/f/devops-infrastructure/distribution-packaging/software-distribution/native-installers/cross-platform-installers/native-gem-installers.md) — Installs gems by downloading, verifying, and compiling source code with native extension support.
- [Dependency Version Locking](https://awesome-repositories.com/f/devops-infrastructure/git-based-deployment/git-submodule-integration/dependency-version-locking.md) — Records exact versions of every installed gem so the same set is reproduced on any machine. ([source](https://cdn.jsdelivr.net/gh/rubygems/bundler@master/README.md))
- [Resolvable Version Verifiers](https://awesome-repositories.com/f/devops-infrastructure/version-control-automation/commit-based-versioning-engines/latest-version-identification/resolvable-version-verifiers.md) — Resolves version conflicts among gem dependencies and records the resolved set in a reproducible lockfile.
- [Dependency Version Updates](https://awesome-repositories.com/f/devops-infrastructure/version-upgrades/dependency-versioning/dependency-version-updates.md) — Updates one or more gems to newer compatible versions while respecting dependency constraints. ([source](https://cdn.jsdelivr.net/gh/rubygems/bundler@master/README.md))
- [Locked Version Updates](https://awesome-repositories.com/f/devops-infrastructure/version-upgrades/dependency-versioning/dependency-version-updates/locked-version-updates.md) — Bundler replaces locked package versions with newer ones that satisfy the constraints in the dependency manifest, for a subset or all packages. ([source](https://bundler.io/man/bundle-update.1.html))
- [Full Dependency Set Listings](https://awesome-repositories.com/f/devops-infrastructure/package-installations/full-dependency-set-listings.md) — Lists all required gems with versions, file paths, and optional outdated package highlights. ([source](https://bundler.io/man/bundle-show.1.html))
- [Outdated Package Listings](https://awesome-repositories.com/f/devops-infrastructure/package-installations/outdated-package-listings.md) — Bundler lists installed packages that have newer versions available from their sources, optionally filtering by specific package names. ([source](https://bundler.io/man/bundle-outdated.1.html))
- [Script Wrapper Executables](https://awesome-repositories.com/f/devops-infrastructure/package-installations/standalone-package-installers/script-wrapper-executables.md) — Generates executable scripts that automatically load the correct gem context without a command prefix. ([source](https://bundler.io/man/bundle-exec.1.html))

### Security & Cryptography

- [Credential Segregation Systems](https://awesome-repositories.com/f/security-cryptography/data-redaction-tools/stream-redaction/credential-segregation-systems.md) — Segregates authentication secrets from source URLs and redacts them from all output.

### Software Engineering & Architecture

- [Named Dependency Groups](https://awesome-repositories.com/f/software-engineering-architecture/named-dependency-groups.md) — Groups dependencies into named sets so they install only in specific environments like test or production. ([source](https://bundler.io/man/gemfile.5.html))
- [SAT-Based Dependency Resolution](https://awesome-repositories.com/f/software-engineering-architecture/sat-based-dependency-resolution.md) — Uses a SAT solver algorithm to find compatible gem versions satisfying all dependency constraints.
- [Dependency License Extractors](https://awesome-repositories.com/f/software-engineering-architecture/licensing-information/dependency-license-extractors.md) — Prints the license of every dependency, extracted automatically from installed gem metadata. ([source](https://bundler.io/man/bundle-licenses.1.html))
- [CLI Plugin Systems](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/hook-based-plugin-systems/cli-plugin-systems.md) — Dispatches unrecognized CLI commands to external plugin executables, extending the tool's interface.
