summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@may.lt>2016-06-22 15:56:01 +0100
committerGitHub <noreply@github.com>2016-06-22 15:56:01 +0100
commit5d1cabe2e5a2653ff12a5e4ad0f8d4f248280da5 (patch)
treea85bdca28c8d83833581a2611f61bc5e99e82453
parent5cd8a4a2f133dc252932f4542d5d6b5d7d46fe37 (diff)
parentc9efceeffd69e4a9b22dcd9c4c5a74c6d6f3aaad (diff)
downloadchef-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.rb12
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