{"id":13533168,"url":"https://github.com/gel-rb/gel","last_synced_at":"2026-01-11T22:58:11.763Z","repository":{"id":34668412,"uuid":"112933756","full_name":"gel-rb/gel","owner":"gel-rb","description":"A modern gem manager: Gel is a lightweight alternative to Bundler","archived":false,"fork":false,"pushed_at":"2025-03-18T11:31:09.000Z","size":1273,"stargazers_count":797,"open_issues_count":26,"forks_count":27,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-03-18T12:30:50.338Z","etag":null,"topics":["dependency-manager","package-manager","ruby","rubygems"],"latest_commit_sha":null,"homepage":"https://gel.dev","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gel-rb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-03T14:15:49.000Z","updated_at":"2025-03-18T11:29:27.000Z","dependencies_parsed_at":"2024-11-06T05:02:04.426Z","dependency_job_id":null,"html_url":"https://github.com/gel-rb/gel","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gel-rb%2Fgel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gel-rb%2Fgel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gel-rb%2Fgel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gel-rb%2Fgel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gel-rb","download_url":"https://codeload.github.com/gel-rb/gel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246713274,"owners_count":20821866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency-manager","package-manager","ruby","rubygems"],"created_at":"2024-08-01T07:01:17.227Z","updated_at":"2026-01-11T22:58:11.757Z","avatar_url":"https://github.com/gel-rb.png","language":"Ruby","funding_links":[],"categories":["Awesome Ruby CLIs","Ruby"],"sub_categories":["Package Management"],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://gel.dev\"\u003e\u003cimg src=\"https://gel.dev/images/gel.svg\" width=\"150\" /\u003e\u003c/a\u003e\u003c/p\u003e\n\n# Gel\n\nA modern gem manager.\n\nGel is a lightweight alternative to Bundler.\n\nThrough a combination of algorithm choices and skipping compatibility\nwith some legacy features that date back to the earliest days of\nRubyGems, Gel is able to outperform both Bundler and RubyGems in many\ncommon use cases.\n\nIn making this trade, Gel chooses not to support some less frequently\nused, but independently valuable, Bundler features:\n\n|         |         Gel        | Bundler \u0026 Rubygems |\n|---------|--------------------|--------------------|\n| install | :white_check_mark: | :white_check_mark: |\n| update  | :white_check_mark: | :white_check_mark: |\n| lock    | :white_check_mark: | :white_check_mark: |\n| exec    | :white_check_mark: | :white_check_mark: |\n| gem authoring | :x:  | :white_check_mark: |\n| vendoring     | :ok: | :white_check_mark: |\n| anything else | :x:  | :white_check_mark: |\n\nIn most cases, Gel will be a drop-in replacement, and you can still use\nRubyGems directly if you need to `gem push`, for example.\n\n## Can I Use Gel Today?\n\nI ([@matthewd](https://github.com/matthewd)) have been using Gel\nexclusively on my local development machines since January 2019. While I\nhave occasionally encountered issues when installing some new gem, they\nhave been rare and minor, requiring only a small additional API or\nsimilar -- and as those outliers have been addressed, they become\nincreasingly infrequent.\n\nIn particular (and as is consistent with the type of work it does), Gel\nwill either work or it will fail -- perhaps on encountering an unusual\nconstruct in your Gemfile, or perhaps while attempting to install a gem\nthat does something weird. The \"latest\" it is likely to fail is if, at\nruntime, your code (or a gem you've loaded) assumes the presence of a\nspecific RubyGems/Bundler API that Gel does not emulate. It's extremely\nrare to encounter more subtle issues that don't manifest as immediate\nfailure.\n\nYou can use Gel in your local environment with no effect upon your\nproduction setup, or even your coworkers' -- Gel uses the same Gemfile\nand Gemfile.lock files as Bundler. It also maintains completely\nindependent copies of installed gems, so it's totally safe to co-exist\nwith Bundler on your machine. (Which one is active is determined by the\nenvironment variables within your shell terminal.)\n\n## Why Should I Use Gel?\n\nGel was written with the goal of improving the performance of common\nBundler tasks.\n\nBy focusing on those common requirements, and leaving more obscure needs\nto be filled by Bundler, Gel is able to outperform Bundler in the\noperations you use most.\n\nGel also uses a new version solving algorithm called [Pub\nGrub](https://medium.com/@nex3/pubgrub-2fb6470504f) to resolve\ndependencies between gems, via the `pub_grub` gem\n(https://github.com/jhawthorn/pub_grub).\n\nSome real world examples of the types of performance improvements Gel provides over Bundler are as follows:\n\n* `% gel exec rake -version`: 55% faster than `bundle`\n* `% gel exec rails --version`: 60% faster than `bundle`\n* `% gel exec rails runner nil`: 45% faster than `bundle`\n\nComparing using a complex, mature Rails application:\n\n* `% gel install`: 55% faster than `bundle`\n* `% gel lock`: 78% faster than `bundle` on first run\n* `% gel lock`: 95% faster than `bundle` on later runs (cache exists)\n\n\nComparing using a simple Gemfile with a complex gem:\n\n```\nsource \"https://rubygems.org\"\n\ngem \"tty\"\n```\n\n* `% gel install`: 70% faster than `bundle`\n* `% gel lock`: 34% faster than `bundle`\n\nComparing using an example Gemfile with gems that showcase a difficult version resolving:\n\n```\nsource \"https://rubygems.org\"\n\ngem \"activerecord\"\ngem \"quiet_assets\"\n```\n\n* `% gel lock`: 96% faster than `bundle`\n\nThis example showcases the speed improvements provided by the new PubGrub Version Solving algorithm.\n\nNote that all of the performance numbers were gathered using just a regular laptop used for common day-to-day development. These numbers were not measured in perfect isolation and your experience may vary.\n\n## Installation\n\nIf you're on a Mac, we recommend that you install via Homebrew:\n\n    $ brew install gel\n\nOtherwise, you can install Gel as a gem:\n\n    $ gem install gel\n\nThen, either activate Gel in your current shell:\n\n    $ eval \"$(gel shell-setup)\"\n\nOr add it to your `.bashrc` or `.zshrc` to enable it everywhere:\n\n    $ echo 'eval \"$(gel shell-setup)\"' \u003e\u003e ~/.bashrc\n\n## Usage\n\nUse `gel install`, `gel lock`, `gel update`, and `gel exec` as you would\nthe equivalent `bundle` subcommands.\n\nWhile it will work, in general you should not actually need to use `gel\nexec` directly -- installed gems' executables will automatically respect\nthe locally locked versions where appropriate.\n\nWhere you would previously have run `bundle exec rubocop` or\n`bundle exec rake` inside an application directory, you can run\n`rubocop` or `rake` and expect the same results, even if you have other\nversions of those gems installed.\n\n## ENVIRONMENT VARIABLES\n\n* `GEL_GEMFILE`\n  The path to the gemfile gel should use\n\n* `GEL_LOCKFILE`\n  The path to the lockfile that gel should use\n\n* `GEL_CACHE`\n  The path to the gel version information cache\n\n* `GEL_AUTH`\n  Gem server credentials as a space-separated list of URIs, e.g.:\n  \"http://user:pass@ruby.example.com/ http://user2:pass2@gems.example.org/\"\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/rake test` to run the tests.\n\nTo use your development instance as your primary Gel, add its `exe/` to your `$PATH` before running `shell-setup`, ensuring it comes before any RubyGems `bin` directory that might override it.\n\nFor example:\n\n```sh\nPATH=\"$HOME/projects/gel/exe:$PATH\"\neval \"$(gel shell-setup)\"\n```\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/gel-rb/gel. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the Gel project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/gel-rb/gel/blob/main/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgel-rb%2Fgel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgel-rb%2Fgel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgel-rb%2Fgel/lists"}