Skip to content
  • David Rodríguez's avatar
    d12c8cbf
    [rubygems/rubygems] Fix `gem pristine etc` resetting gem twice sometimes · d12c8cbf
    David Rodríguez authored
    If a default version and a regular version of etc are present at the
    same time, RubyGems will end up duplicating work and running pristine
    twice.
    
    The `etc` gem is special because it's loaded by RubyGems by default.
    When doing this, RubyGems will activate the regularly installed version.
    The when `gem pristine` runs, it will find to installed specifications
    but materialize both to the already activated specification.
    
    Before:
    
    ```
    $ gem pristine etc --version 1.4.3
    Restoring gems to pristine condition...
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    ```
    
    After:
    
    ```
    $ gem pristine etc --version 1.4.3
    Restoring gems to pristine condition...
    Skipped etc-1.4.3, it is a default gem
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    ```
    
    https://github.com/rubygems/rubygems/commit/5c279ac56b
    d12c8cbf
    [rubygems/rubygems] Fix `gem pristine etc` resetting gem twice sometimes
    David Rodríguez authored
    If a default version and a regular version of etc are present at the
    same time, RubyGems will end up duplicating work and running pristine
    twice.
    
    The `etc` gem is special because it's loaded by RubyGems by default.
    When doing this, RubyGems will activate the regularly installed version.
    The when `gem pristine` runs, it will find to installed specifications
    but materialize both to the already activated specification.
    
    Before:
    
    ```
    $ gem pristine etc --version 1.4.3
    Restoring gems to pristine condition...
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    ```
    
    After:
    
    ```
    $ gem pristine etc --version 1.4.3
    Restoring gems to pristine condition...
    Skipped etc-1.4.3, it is a default gem
    Building native extensions. This could take a while...
    Restored etc-1.4.3
    ```
    
    https://github.com/rubygems/rubygems/commit/5c279ac56b
Loading