Skip to content

Instantly share code, notes, and snippets.

@nchelluri
Last active January 2, 2016 21:09
Show Gist options
  • Save nchelluri/8361325 to your computer and use it in GitHub Desktop.
Save nchelluri/8361325 to your computer and use it in GitHub Desktop.
Gem Versioning
#!/usr/bin/env ruby
puts [Gem::Version.new('4.0.0'), Gem::Version.new('4.0.0.alpha1'), Gem::Version.new('4.0.0.alpha2'), Gem::Version.new('4.0.1'), Gem::Version.new('4.1.0'), Gem::Version.new('4.1.1'), Gem::Version.new('4.1'), Gem::Version.new('4.0.0.gamma1'), Gem::Version.new('4.0.0.a1'), Gem::Version.new('4.0.0.zeta1')].sort
puts "\n\nComparing 4.0.0.alpha1 to 4.0.0: #{(Gem::Version.new('4.0.0.alpha1') <=> Gem::Version.new('4.0.0')).inspect}"
puts "\n\n4.0.0.alpha1 approximately equals: #{Gem::Version.new('4.0.0.alpha1').approximate_recommendation}"
puts "4.0.0 approximately equals: #{Gem::Version.new('4.0.0').approximate_recommendation}"
puts "4.0.1 approximately equals: #{Gem::Version.new('4.0.1').approximate_recommendation}"
puts "4.1.0 approximately equals: #{Gem::Version.new('4.1.0').approximate_recommendation}"
puts "4.1.1 approximately equals: #{Gem::Version.new('4.1.1').approximate_recommendation}"
puts "4.1.1.1 approximately equals: #{Gem::Version.new('4.1.1.1').approximate_recommendation}"
puts "\n\nBumping 4.0.0.alpha1: #{Gem::Version.new('4.0.0.alpha1').bump}"
puts "\n\n~> 4.0.0 satisfied by 4.0.0.alpha1? #{(Gem::Requirement.new('~> 4.0.0').satisfied_by?(Gem::Version.new('4.0.0.alpha1'))).inspect}"
puts "~> 4.0 satisfied by 4.0.0.alpha1? #{(Gem::Requirement.new('~> 4.0').satisfied_by?(Gem::Version.new('4.0.0.alpha1'))).inspect}"
puts "~> 4 satisfied by 4.0.0.alpha1? #{(Gem::Requirement.new('~> 4').satisfied_by?(Gem::Version.new('4.0.0.alpha1'))).inspect}"
puts "~> 4.0.0.alpha1 satisfied by 4.0.0.alpha1? #{(Gem::Requirement.new('~> 4.0.0.alpha1').satisfied_by?(Gem::Version.new('4.0.0.alpha1'))).inspect}"
puts "~> 4.0.0.alpha1 satisfied by 4.0.0.alpha2? #{(Gem::Requirement.new('~> 4.0.0.alpha1').satisfied_by?(Gem::Version.new('4.0.0.alpha2'))).inspect}"
puts "~> 4.0.0.alpha1 satisfied by 4.0.0? #{(Gem::Requirement.new('~> 4.0.0.alpha1').satisfied_by?(Gem::Version.new('4.0.0'))).inspect}"
puts "~> 4.0.0.alpha1 satisfied by 4.0.1? #{(Gem::Requirement.new('~> 4.0.0.alpha1').satisfied_by?(Gem::Version.new('4.0.1'))).inspect}"
puts "~> 4.0.0 satisfied by 4.0.0? #{(Gem::Requirement.new('~> 4.0.0').satisfied_by?(Gem::Version.new('4.0.0'))).inspect}"
puts "\n\n"
puts 'https://github.com/rubygems/rubygems/blob/master/lib/rubygems/version.rb'
puts 'https://github.com/rubygems/rubygems/blob/master/test/rubygems/test_gem_version.rb'
puts 'https://github.com/rubygems/rubygems/blob/master/lib/rubygems/requirement.rb'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment