Posted by Richard
Heroku provides an opinionated platform in order to help you build better applications. We give you a default version of Ruby to get you started, and give you a way to declare your version for total control. In the past creating an application would give you 1.9.2, starting today the default is 2.0.0.
Ruby 2.0.0 is fast, stable, and works out of the box with Rails 4. Applications running on 2.0.0 will have a longer shelf life than 1.9.3, giving you greater erosion resistance.
If you have a previously deployed app it will continue to use Ruby 1.9.2, any new applications will run on 2.0.0. Heroku is an erosion resistant platform, which means we will not change a major or minor version of Ruby on your app without you taking action.
Setting your Ruby Version
In addition to providing a default version of Ruby, you have the ability to specify your version of Ruby in your
While you can prototype on the default Ruby, we recommend explicitly setting your version on all production applications. When you specify the Ruby version in your codebase, you get the exact same version: across every developer and across every app. This means any new developers on your team, any new staging apps you set up on Heroku and any forked apps will have the same version. If your app needs consistency: define your Ruby version.
Ruby 2.0 includes copy on write friendly garbage collection which can reduce memory usage in a forking server such as Unicorn. Ruby 2.0.0 has faster code loading which means large frameworks such as Rails start much faster. Ruby 2.0.0 is mostly backwards compatible with 1.9.3 and at Heroku our developers already run Ruby 2.0.0.
Using the latest stable version of Ruby has advantages for the community as well as for application's performance. In the past some Rubyists have resisted upgrading. This resulted in libraries needing to support multiple versions of Ruby for long periods of time, and creating factions within the community. For instance while Ruby 1.9.3 was released in 2011 there are many developers who are just now upgrading from Ruby 1.8.7 which, was released in 2008. We have encouraged developers to run Ruby 2.0.0 on our platform by making the preview available, and the GA version available on launch day. By setting the default version to 2.0.0 we hope to encourage more developers to run on the most recent stable Ruby version.
Stability, speed, and community are all good aspects to support, but we also care about application maintainability. At the end of this month Ruby 1.8.7 will reach end-of-life. Maximize the life of your application and simplify your upgrade to 2.1.0, coming in December, by using the most recent release.
Ruby at Heroku provides both defaults and flexible choices. You can explicitly declare a Ruby version or accept a stable, default version. Sometimes you may just need something to work, and others you want to enforce dev/prod parity between developers. By supporting a default Ruby you can do either.
Thanks to Japan based Herokai: Ayumu Aizawa, Yukihiro "Matz" Matsumoto, Koichi Sasada, and Nobuyoshi Nakada, for working with us to push our defaults forward. Ruby Core is excited to see Heroku support the new 2.0 default, we hope you are too. Try it on Heroku and let us know what you think: @heroku.