In response to difficulty experienced by some Engine Yard customers recently, we would like to clarify where certain deployment issues are surfacing and how they can be avoided.
Ruby changed their Semantic Versioning beginning with version 2.1.x. The difference in these two formats can be seen here:
Original patch level format (in bold)
New patch level format (in bold)
Engine Yard strives to provide timely, up-to-date releases for our services, infrastructure, and any new Ruby versions. In May 5th’s Stack Release we introduced the new Ruby versioning format for Ruby 2.1 and higher, which is when some customers began experiencing the aforementioned difficulties.
Bundler’s inclusion of their version-locking functionality in v1.5 does not support Ruby’s new patch-level format and therefore accept successive patches to the same major-minor version. This gives many false-positive errors during deployment. This behavior has lead Engine Yard customers to experience difficulties completing their deployment tasks.
For tips on how to avoid such complications, we recommend:
- Avoid setting a Ruby version in Bundler.
- If a Ruby version is set in Bundler, keep it up to date; Update your repo and then deploy after a fresh upgrade. Please note Engine Yard services do not automatically upgrade ruby versions until the Upgrade button has been clicked.
- If the above two options do not work for your project, lock to an explicit version of Ruby using metadata by submitting a Support ticket for our assistance. Be aware that this will prevent you from getting valuable security updates.