diff options
author | Thom May <thom@may.lt> | 2016-06-22 15:56:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-22 15:56:01 +0100 |
commit | 5d1cabe2e5a2653ff12a5e4ad0f8d4f248280da5 (patch) | |
tree | a85bdca28c8d83833581a2611f61bc5e99e82453 | |
parent | 5cd8a4a2f133dc252932f4542d5d6b5d7d46fe37 (diff) | |
parent | c9efceeffd69e4a9b22dcd9c4c5a74c6d6f3aaad (diff) | |
download | chef-5d1cabe2e5a2653ff12a5e4ad0f8d4f248280da5.tar.gz |
Merge pull request #5046 from chef/tm/sorted_gems
correctly select current gem version
-rw-r--r-- | lib/chef/provider/package/rubygems.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/chef/provider/package/rubygems.rb b/lib/chef/provider/package/rubygems.rb index eb5a87099f..0aeec951b1 100644 --- a/lib/chef/provider/package/rubygems.rb +++ b/lib/chef/provider/package/rubygems.rb @@ -431,17 +431,23 @@ class Chef end def current_version - #raise 'todo' + # rubygems 2.6.3 ensures that gem lists are sorted newest first + pos = if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("2.6.3") + :first + else + :last + end + # If one or more matching versions are installed, the newest of them # is the current version if !matching_installed_versions.empty? - gemspec = matching_installed_versions.last + gemspec = matching_installed_versions.send(pos) logger.debug { "#{@new_resource} found installed gem #{gemspec.name} version #{gemspec.version} matching #{gem_dependency}" } gemspec # If no version matching the requirements exists, the latest installed # version is the current version. elsif !all_installed_versions.empty? - gemspec = all_installed_versions.last + gemspec = all_installed_versions.send(pos) logger.debug { "#{@new_resource} newest installed version of gem #{gemspec.name} is #{gemspec.version}" } gemspec else |