|
| 1 | +--- |
| 2 | +title: August 2024 RubyGems Updates |
| 3 | +layout: post |
| 4 | +author: Gift Egwuenu |
| 5 | +author_email: laurandidi21@gmail.com |
| 6 | +--- |
| 7 | + |
| 8 | +Welcome to the RubyGems monthly update! As part of our efforts at Ruby Central, we publish a recap of the work that we’ve done the previous month. Read on to find out what updates were made to RubyGems and RubyGems.org in August. |
| 9 | + |
| 10 | +## RubyGems News |
| 11 | + |
| 12 | +In August, we released RubyGems [3.5.17](https://github.com/rubygems/rubygems/blob/master/CHANGELOG.md#3517--2024-08-01) and [3.5.18](https://github.com/rubygems/rubygems/blob/master/CHANGELOG.md#3518--2024-08-26) along with Bundler [2.5.17](https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md#2517-august-1-2024) and [2.5.18](https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md#2518-august-26-2024). These releases bring a series of enhancements and bug fixes designed to improve the overall developer experience with RubyGems. Notable improvements include fixing an issue where [`gem uninstall <name>:<version>` would fail on shadowed default gems](https://github.com/rubygems/rubygems/pull/7949), [enabling lockfile checksums in future Bundler 3](https://github.com/rubygems/rubygems/pull/7805) even when there's no previous lockfile, and fixing an issue where `bundle update <indirect_dep>` would [fail to upgrade when versions are present in two different sources](https://github.com/rubygems/rubygems/pull/7915). |
| 13 | + |
| 14 | +Some other important accomplishments from the team this month include: |
| 15 | + |
| 16 | +[**Fixing an Edge Case Where Bundler Was Removing Platforms Due to Bad Indentation**](https://github.com/rubygems/rubygems/pull/7916) |
| 17 | + |
| 18 | +- We resolved an issue where Bundler was removing platforms and associated gems from `Gemfile.lock` because of bad indentation. |
| 19 | +- Now, Bundler auto-fixes indentation by properly stripping whitespace, ensuring badly indented platforms are recognized and retained, which prevents broken dependencies and confusion. |
| 20 | + |
| 21 | +[**Fixing a Source Dependency Confusion in `bundle update <specific_gem>`**](https://github.com/rubygems/rubygems/pull/7915) |
| 22 | + |
| 23 | +- We fixed an issue where `bundle update <specific_gem>` would confuse the source of `<specific_gem>` if an old version existed on a different gem server than specified in the lockfile, allowing smoother gem updates. |
| 24 | +- The bug was due to the additional unlocked resolution not using the correct source requirements during `bundle update <specific_gem>`. The fix ensures it now uses the same source requirements as the main resolution. |
| 25 | + |
| 26 | +[**Improved Developer Experience When Setting Up RubyGems With an Unsupported Ruby**](https://github.com/rubygems/rubygems/pull/7942) |
| 27 | + |
| 28 | +- We added a clearer error message when an unsupported Ruby version is detected and the setup process is aborted, improving the process by preventing new developers from being discouraged by obscure errors. |
| 29 | +- This change helps people starting to develop RubyGems by immediately informing them if their Ruby version isn't supported. |
| 30 | + |
| 31 | +[**Fixed `gem uninstall <gem>:<version>`** **Failing When Target Gem is Also a Default Gem**](https://github.com/rubygems/rubygems/pull/7949) |
| 32 | + |
| 33 | +- We resolved an issue where `gem uninstall <gem>:<version>` would fail with a confusing error if the target gem was also a default gem, providing a smoother CLI experience. |
| 34 | +- The fix skips the default copy of the gem during uninstallation, avoiding the "double uninstall" problem. |
| 35 | + |
| 36 | +[**Fixed Issues With the`--prefer-local` Flag in `bundle install`**](https://github.com/rubygems/rubygems/pull/7951) |
| 37 | + |
| 38 | +- We resolved problems where the `-prefer-local` flag wasn't working effectively; it didn't fallback to remote gems when local ones didn't satisfy requirements and didn't prefer local gems for sub-dependencies. |
| 39 | +- We implemented a solution similar to how we handle prereleases: for each gem, first prefer local versions; if conflicts arise, allow remote versions for those specific gems. |
| 40 | +- This was inspired by [@gouravkhunger](https://github.com/gouravkhunger), who uses `-prefer-local` to help package Ruby for his Jekyllex project. |
| 41 | + |
| 42 | +[**Helped Appraisals Maintainers Run Tests With Latest Bundler**](https://github.com/rubygems/rubygems/pull/7950) |
| 43 | + |
| 44 | +- Ensured that Appraisals, a library for testing against multiple Gemfiles, [works with the latest Bundler](https://github.com/thoughtbot/appraisal/pull/229) by proposing updates and fixing a small behavior changes in Bundler 2.4 that affected them. |
| 45 | +- Appraisals is tightly coupled to Bundler internals, so it's important it remains compatible to detect potential issues in Bundler itself. |
| 46 | + |
| 47 | +In August, RubyGems gained [77 new commits](https://github.com/rubygems/rubygems/compare/master@%7B2024-8-01%7D...master@%7B2024-8-31%7D) contributed by 8 authors. They were 1,163 additions and 151 deletions across 90 files. |
| 48 | + |
| 49 | +## [RubyGems.org](http://rubygems.org/) News |
| 50 | + |
| 51 | +The updates made this month to [RubyGems.org](http://rubygems.org/) reflect a strong commitment to improving user experience, enhancing security, and modernizing the platform. Sponsored hosting for [RubyGems.org](http://rubygems.org/) in August was provided by [AWS](https://aws.amazon.com/?ref=rubycentral.org), [Fastly](https://www.fastly.com/?ref=rubycentral.org), and [DataDog](https://www.datadoghq.com/?ref=rubycentral.org). |
| 52 | + |
| 53 | +The following are highlights of what the team worked on this month: |
| 54 | + |
| 55 | +[**Prevented AWS Secrets From Being Printed in Logs or Error Messages**](https://github.com/rubygems/rubygems.org/pull/4968) |
| 56 | + |
| 57 | +- We modified the logging and error-handling mechanisms to ensure AWS secrets are sanitized and never outputted. |
| 58 | +- Although this issue wasn't occurring in CI, it's crucial to safeguard against future changes that might inadvertently expose sensitive information. |
| 59 | + |
| 60 | +[**Renamed `#search_field`** **to Resolve a Naming Conflict With Rails Internals**](https://github.com/rubygems/rubygems.org/pull/4957) |
| 61 | + |
| 62 | +- The conflict was causing the Rails info page (`/rails/info/routes`) to raise an error, hindering access to important debugging routes. |
| 63 | +- To resolve this we changed the method name to eliminate the conflict, restoring normal functionality to the Rails info page. |
| 64 | + |
| 65 | +[**Fixed a Minor Inefficiency in RubyGems Controller**](https://github.com/rubygems/rubygems.org/pull/4953) |
| 66 | + |
| 67 | +- The `GemNameReservation` query was being executed four times per request, leading to potential performance issues. |
| 68 | +- We refactored the controller logic to perform the `GemNameReservation` query only once per request, improving efficiency. |
| 69 | + |
| 70 | +[**Fixed Broken Recovery Code Acceptance Tests**](https://github.com/rubygems/rubygems.org/pull/4950) |
| 71 | + |
| 72 | +- Tests were failing due to two issues, blocking the CI pipeline. We addressed each: |
| 73 | + - *Invalid jQuery Selector Length Check*: We corrected the jQuery selector `$("#recovery-code-list").length` to properly detect the element. |
| 74 | + - *Confirmation Dialog Not Triggering on Path Change*: We adjusted the test so that changing the current path triggers the confirm dialog as expected. |
| 75 | + |
| 76 | +[**Optimized API Key Expiration Process by Skipping Already Expired Keys**](https://github.com/rubygems/rubygems.org/pull/4975) |
| 77 | + |
| 78 | +- The existing expiration process was inefficient because it looped through all API keys, including those that were already expired. |
| 79 | +- To fix this, we modified the API key expiration routine to process only unexpired API keys, thereby avoiding unnecessary iterations over keys that have already expired. |
| 80 | + |
| 81 | +In August, [RubyGems.org](http://rubygems.org/) gained [57 new commits](https://github.com/rubygems/rubygems.org/compare/master@%7B2024-8-01%7D...master@%7B2024-8-31%7D) contributed by 6 authors. There were 134 additions and 137 deletions across 15 files. |
| 82 | + |
| 83 | +## Thank you |
| 84 | + |
| 85 | +Thank you to all the contributors of RubyGems and [RubyGems.org](http://rubygems.org/) for this month! Your contributions are greatly appreciated, and we are grateful for your support. |
| 86 | + |
| 87 | +### Contributors to RubyGems: |
| 88 | + |
| 89 | +- [@deivid-rodriguez](https://github.com/deivid-rodriguez) David Rodríguez |
| 90 | +- [@hsbt](https://github.com/hsbt) Hiroshi Shibata |
| 91 | +- [@marcoroth](https://github.com/marcoroth) Marco Roth |
| 92 | +- [@gouravkhunger](https://github.com/gouravkhunger) Gourav Khunger |
| 93 | +- [@segiddins](https://github.com/segiddins) Samuel Giddins |
| 94 | +- [@simi](https://github.com/simi) Josef Šimánek |
| 95 | +- [@KJTsanaktsidis](https://github.com/KJTsanaktsidis) KJ Tsanaktsidis |
| 96 | +- [@mattbrictson](https://github.com/mattbrictson) Matt Brictson |
| 97 | +- [@djberube](https://github.com/djberube) David J Berube |
| 98 | +- [@jeromedalbert](https://github.com/jeromedalbert) Jerome Dalbert |
| 99 | +- [@martinemde](https://github.com/martinemde) Martin Emde |
| 100 | +- [@indirect](https://github.com/indirect) André Arko |
| 101 | +- [@byroot](https://github.com/byroot) Jean Boussier |
| 102 | +- [@nobu](https://github.com/nobu) Nobuyoshi Nakada |
| 103 | +- [@voxik](https://github.com/voxik) Vít Ondruch |
| 104 | +- [@sunpoet](https://github.com/sunpoet) Po-Chuan Hsieh |
| 105 | +- [@eregon](https://github.com/eregon) Benoit Daloze |
| 106 | + |
| 107 | +### Contributors to [RubyGems.org](http://rubygems.org/): |
| 108 | + |
| 109 | +- [@hsbt](https://github.com/hsbt) Hiroshi Shibata |
| 110 | +- [@martinemde](https://github.com/martinemde) Martin Emde |
| 111 | +- [@colby-swandale](https://github.com/colby-swandale) Colby Swandale |
| 112 | +- [@segiddins](https://github.com/segiddins) Samuel Giddins |
| 113 | +- [@simi](https://github.com/simi) Josef Šimánek |
| 114 | +- [@okuramasafumi](https://github.com/okuramasafumi) Okura Masafumi |
| 115 | + |
| 116 | +*If we missed you, please let us know so we can include you in our shout out!* |
| 117 | + |
| 118 | +--- |
| 119 | +Learn more about contributing to RubyGems by visiting the [RubyGems Contributing Guide](https://github.com/rubygems/rubygems/blob/master/CONTRIBUTING.md). We welcome all kinds of contributions, including bug fixes, feature implementation, writing and updating documentation, and bug triage. |
0 commit comments