Before explaining the rationale, I’d like to be clear that Chef 12
Omnibus packages will ship with Ruby 2.1 for Unix-like systems and 2.0
for Windows (we’d prefer to ship with 2.1 here as well, but are
prevented from doing so by some dependencies), so users of Omnibus
packages will not be impacted by this change at all.
Our goal is to allow you to upgrade minor versions with confidence that
your existing installation procedures and automation code will continue
to work correctly. We also want to be able to ship new features, bug
fixes, and security updates as safely and quickly as possible.
As you may know, the Ruby core team
has announced that 1.9.3 will become EOL in February of 2015.
Given that our major releases have historically had a lifecycle longer
than one year, Ruby 1.9.3 will become EOL during the 12.0 release cycle.
If we were to support Ruby 1.9.3 in the 12.0 release, we would have to
either maintain support for an EOL Ruby version for the entire life of
Chef 12, or drop support in the middle of the 12 release cycle. Both of
these options have serious drawbacks that hinder us from achieving our
goal of delivering improvements safely and quickly.
To implement this change, we will be setting the minimum Ruby version
attribute of the Chef gem to require Ruby 2.0 or above. We’ve considered
allowing 1.9.3 to continue to function, perhaps with a warning, but
decided against that approach because it’s inherently unsafe. Warnings
tend to get ignored until they’re errors, so attempting to run Chef 12
on Ruby 1.9.3 will be an error.
If you have any questions or comments, feel free to contact us on the
mailing list, IRC, or though our support team.