Commit 8723c8b
[ruby/rubygems] Fix Bundler crashing when installing very old gems:
- ### Problem
There is a regression where bundler can longer install gems that
were packaged a long time ago, like the [memoize gem](https://rubygems.org/gems/memoize).
Bundler will crash with such error:
```
Installing memoize 1.3.1
--- ERROR REPORT TEMPLATE -------------------------------------------------------
NoMethodError: undefined method 'as_list' for nil
/Users/edouard/src/opensource/rubygems/lib/rubygems/dependency.rb:146:in 'Gem::Dependency#requirements_list'
```
### Context
These very old gems were packaged at the time were a
`Gem::Dependency` had no ivars `requirement`.
This is what the dumped gemspec looks like:
```
dependencies:
- !ruby/object:Gem::Dependency
name: test-unit
type: :development
version_requirement:
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: 2.0.2
version:
```
As opposed to a gem that was packaged more recently:
```
- !ruby/object:Gem::Dependency
name: minitest-global_expectations
requirement: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
type: :development
prerelease: false
version_requirements: !ruby/object:Gem::Requirement
requirements:
- - ">="
- !ruby/object:Gem::Version
version: '0'
```
The change we made in ruby/rubygems@cbe57bb#diff-5ccc8aa468df013cc970580e88642417da12284da6529a4885b9abf447ae95edL529
broke old gem installation.
### Solution
If `requirement` isn't set in the hash, look for
`version_requirements` instead.
ruby/rubygems@cfd8b206921 parent 4c6c02d commit 8723c8b
2 files changed
Lines changed: 21 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
573 | 573 | | |
574 | 574 | | |
575 | 575 | | |
576 | | - | |
| 576 | + | |
577 | 577 | | |
578 | 578 | | |
579 | 579 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
921 | 921 | | |
922 | 922 | | |
923 | 923 | | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
924 | 944 | | |
925 | 945 | | |
926 | 946 | | |
| |||
0 commit comments