Skip to content
  • David Rodríguez's avatar
    fe1bace4
    [rubygems/rubygems] Fix `gem install does-not-exist` being super slow · fe1bace4
    David Rodríguez authored
    Every time a gem is not found in the Compact Index API, RubyGems will
    fallback to the full index, which is very slow. This is unnecessary
    because both indexes should be providing the same gems, so if a gem
    can't be found in the Compact Index API, it won't be found in the full
    index.
    
    We _do_ want a fallback to the full index, whenever the Compact Index
    API is not implemented. To detect that, we check that the API responds
    to the "/versions" endpoint, just like Bundler does.
    
    Before:
    
    ```
    $ time gem install fooasdsfafs
    ERROR:  Could not find a valid gem 'fooasdsfafs' (>= 0) in any repository
    gem  20,77s user 0,59s system 96% cpu 22,017 total
    ```
    
    After:
    
    ```
    $ time gem install fooasdsfafs
    ERROR:  Could not find a valid gem 'fooasdsfafs' (>= 0) in any repository
    gem  5,02s user 0,09s system 91% cpu 5,568 total
    ```
    
    https://github.com/rubygems/rubygems/commit/c0d6b9eea7
    fe1bace4
    [rubygems/rubygems] Fix `gem install does-not-exist` being super slow
    David Rodríguez authored
    Every time a gem is not found in the Compact Index API, RubyGems will
    fallback to the full index, which is very slow. This is unnecessary
    because both indexes should be providing the same gems, so if a gem
    can't be found in the Compact Index API, it won't be found in the full
    index.
    
    We _do_ want a fallback to the full index, whenever the Compact Index
    API is not implemented. To detect that, we check that the API responds
    to the "/versions" endpoint, just like Bundler does.
    
    Before:
    
    ```
    $ time gem install fooasdsfafs
    ERROR:  Could not find a valid gem 'fooasdsfafs' (>= 0) in any repository
    gem  20,77s user 0,59s system 96% cpu 22,017 total
    ```
    
    After:
    
    ```
    $ time gem install fooasdsfafs
    ERROR:  Could not find a valid gem 'fooasdsfafs' (>= 0) in any repository
    gem  5,02s user 0,09s system 91% cpu 5,568 total
    ```
    
    https://github.com/rubygems/rubygems/commit/c0d6b9eea7
Loading