diff options
author | Thom May <thom@chef.io> | 2016-06-22 10:59:42 +0100 |
---|---|---|
committer | Thom May <thom@chef.io> | 2016-06-22 10:59:42 +0100 |
commit | c9efceeffd69e4a9b22dcd9c4c5a74c6d6f3aaad (patch) | |
tree | a47d2a8fc57f7092b3e3244b21735d37652e77bb | |
parent | de78e3902a6b1743f0d69bbac073c274ed85cb80 (diff) | |
download | chef-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.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 |