The Windows Azure SDK for Ruby

If you haven't heard, there's now a Ruby SDK for Windows Azure that provides access to Windows Azure Data Management services and some Service Bus services. For hosting Ruby web applications on Windows Azure, the officially supported method is to use a Virtual Machine running Linux. You can still use things like RubyRole to host a Ruby application in a Windows-based Cloud Service, however those aren't officially documented/supported.

Getting started

The SDK is provided as the azure gem. You can install this through gem install azure. This provides you with the bits to access storage and service bus.

Creating or managing virtual machines can be accomplished using the Windows Azure Management Portal, or from the Windows Azure Command-line Tools. The web portal should work in any modern browser, and the command-line tools use Node.js so they should work on most platforms as well. If you have Node.js installed, you can get the command-line tools by running npm install azure-cli -g and then using the 'azure' command from the command-line/bash/terminal/whatever.

Windows Azure Data Management

Windows Azure Data Management provides a variety of data storage options. The three that the SDK provides access to are:

  • Tables provide storage for rows of key/value pairs. Each row has a partition key, which is how data is partitioned across servers, and a row key, which uniquely identifies a row of key/value pairs within a partition. Together, these two keys allow you to retrieve a row from storage. The rest of the row can be whatever key/value pairs you want.

    For more information, see How to use the Table service from Ruby.

  • Blobs provide unstructured file storage. Text files, images, etc. Data stored in blobs can be replicated globally using the Content Delivery Network, so it is a nice place to store static assets for your applications if you serve a global audience.

    For more information, see How to use the Blob service from Ruby and CDN.

  • Queues provide message queue functionality. Generally you store messages there so they will be picked up by another process at a later date.

    For more information, see How to use the Queue storage service from Ruby.

Beyond those three, Data Management also includes SQL Database, which can already be accessed using gems such as tiny_tds and ruby-odbc.

Windows Azure Service Bus

Service Bus is a collection of services for connecting disconnected or distributed services. The SDK provides access to the following* services:

Windows Azure Virtual Machines

For an example of setting up a Virtual Machine and deploying Ruby to it, see Ruby on Rails Web application on a Windows Azure VM or Deploy a Ruby on Rails Web application to a Windows Azure VM using Capistrano


With the Windows Azure SDK for Ruby, Windows Azure now officially supports five OSS languages for developing cloud-based solutions. It will be interesting to see what happens next with the Ruby SDK, as there's definitely room for growth for this offering.

For more information on this, as well as what other Windows Azure changes went live today, see Windows Azure: Improvements to Virtual Networks, Virtual Machines, Cloud Services and a new Ruby SDK. Also check out the Windows Azure SDK for Ruby Developer Center.