Maximizing parity between development and production environments is a best practice for minimizing surprises at deployment time. The version of language VM you're using is no exception. One approach to this is to specify it using the same dependency management tool used to specify the versions of libraries your app uses. Clojure uses this technique with Leinigen, Scala with SBT, and Node.js with NPM. In each case, Heroku reads the dependency file during slug compile and uses the version of the language that you specify.
Today, we're pleased to announce that we've added support for specifying a Ruby version to Gem Bundler, the dependency management tool for Ruby. This will allow you to specify a version of Ruby to be used in your Ruby app on Heroku.
Try it out:
$ gem install bundler --pre
In your Gemfile:
source 'http://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.3'
Then:
$ bundle install
$ git add Gemfile
$ git commit -m 'use Ruby 1.9.3'
$ git push heroku master
Prove that you're running 1.9.3:
$ heroku run 'ruby -v'
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
$ heroku run 'ruby -e "puts RUBY_VERSION"'
1.9.3
While you can specify the version of Ruby for you app, you can't specify a patch version, such as Ruby 1.9.2-p290. Ruby patches often include important bug and security fixes and are extremely compatible. Heroku will provide the most secure patch level of whatever minor version number you request.
Thanks to Terence Lee Heroku Ruby team member and bundler maintainer for the additional support of ruby versions to the Heroku Ruby Buildpack and orchestrated the release of Bundler 1.2.0. Also thanks to Yehuda Katz and the entire Bundler team for helping get this release out the door.
From the Heroku Postgres Blog:
"Last week we launched our dev plan, a free database designed for development and testing. Today, we are launching into public beta two new plans: Crane and Kappa. These plans are part of our production tier, offering the same monitoring, operations, support, and data protection features as our more expensive plans.
Crane is available for $50 per month and features a 400 mb cache. Kappa is $100 per month and features a 800 mb cache. "
Crane and Kappa can be provisioned immediately via the Heroku Postgres website or via our command line tool:
$ heroku addons:add heroku-postgresql:crane
SSL is a crucial part of any web app with a login session. As Firesheep demonstrated, HTTPS everywhere is the path forward for modern web apps. Heroku follows this with our own login-protected apps, from the management interface to the Dev Center to the Toolbelt.
Today, we're announcing two new features to make it as easy as possible for you to secure your app running on Heroku with SSL.
First, all apps now have piggyback SSL by default. Prepend https to the hostname for any Heroku app (https://yourapp.herokuapp.com for Cedar and https://yourapp.heroku.com for Aspen/Bamboo) and you'll piggyback on the *.herokuapp.com SSL certificate. No special configuration is needed, just access the app with https and you're secure by default.
Then, for apps running on custom domains, we have a new SSL product that unifies and simplifies our SSL add-on lineup: SSL Endpoint.
SSL Endpoint is priced identically to SSL Hostname ($20/mo) but offers these additional benefits:
X-Forwarded-ForSSL Endpoint is easy to use: add the add-on to your app, then upload your certificate and private key.
$ heroku addons:add ssl:endpoint
-----> Adding SSL endpoint to myapp... done, v20 ($20/mo)
$ heroku certs:add final.crt site.key
-----> Adding certificate to myapp... done.
myapp now served by tokyo-2121.herokussl.com.
You'll get a unique endpoint hostname, such as tokyo-2121.herokussl.com. Create a CNAME record to this hostname for your domain, and you're done.
In setting up SSL for your custom domain you'll still need to purchase an SSL certificate from a provider elsewhere, and configure your DNS. The Dev Center now provides guidance on each of these steps:
SSL Endpoint, like SSL Hostname, will not support naked domains. More detail on issues presented with naked domains can be found here.
With security and privacy as top concerns in this era of digital communication, Heroku wants to make it as easy as possible for your app to be secure and trusted for your users. The internet is increasingly embracing HTTPS everywhere, and HTTPS on Heroku has never been easier.
Today Heroku is launching a new version of our free Postgres database service. This new dev plan offers increased parity between our free database service and our paid, production plans. New features include:
pg commands in the Heroku command line client.This plan is available immediately in public beta and can be provisioned through the Heroku add-ons catalog or command line tool:
$ heroku addons:add heroku-postgresql:dev
Check out the Heroku Postgres Blog to read more.
The Heroku Changelog is a feed of all public-facing changes to the Heroku runtime platform. While we announce all major new features via the Heroku blog, we're making small improvements all the time. When any of those improvements have any user-visible impact, you'll find them in the changelog.
Some recent examples of posts to the changelog include new versions of the Heroku CLI, a new error code, and changes to logging.
To get the latest on changes like these, visit the Heroku Changelog, or subscribe via feed or Twitter.