# File lib/chef/cookbook/metadata/version.rb, line 53 def <=>(v) major, minor, patch = ( [ :major, :minor, :patch ].collect do |method| self.send(method) <=> v.send(method) end ) Chef::Log.debug "(#{self.to_s}/#{v.to_s}) major,minor,patch: #{[major,minor,patch].join(',')}" # all these returns feels like C, surely there is a better way! if major == 0 && minor == 0 && patch == 0 comp = 0 end if major == 1 comp = 1 end if major == 0 && minor == 1 && patch == -1 comp = 1 end if minor == 1 && major == 0 && patch == 0 comp = 1 end if patch == 1 && major == 0 && minor == 0 comp = 1 end return (comp || -1) end