summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThom May <thom@chef.io>2016-06-22 10:59:42 +0100
committerThom May <thom@chef.io>2016-06-22 10:59:42 +0100
commitc9efceeffd69e4a9b22dcd9c4c5a74c6d6f3aaad (patch)
treea47d2a8fc57f7092b3e3244b21735d37652e77bb
parentde78e3902a6b1743f0d69bbac073c274ed85cb80 (diff)
downloadchef-tm/sorted_gems.tar.gz
correctly select current gem versiontm/sorted_gems
Signed-off-by: Thom May <thom@chef.io>
-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