When a Ruby version gem has a letter in its version number, it is considered a pre-release:
Even if a pre-release gem has the highest version number, it is never installed unless the user explictily requested the version:
gem install foobar --version="=2.3.0.alpha2"
bundle update will never update a stable version to a pre-release version unless the user explicitly requests it in the
gem 'foobar', '=2.3.0.alpha2'
Semantic Versioning has a naming convention for pre-releases that is incompatible with that from RubyGems. In Semantic Versioning, the version number and pre-release identifier (like
rc1) must be separated by a dash, e.g.
1.0.0-rc1. However, RubyGems versions require version components to be separated by a dot.
When RubyGems sees a version number with a dash, it automatically converts it to a RubyGems-compatible version like this:
|Semantic versioning||Converted RubyGems version|