Archive for the ‘Ruby on Rails’ Category.

Movin’ on… (status of EC2 on Rails)

I began a fun project a couple of years ago: EC2 on Rails. It became quite widely used, people contributed some great code, and a small community developed.

I had a great vision for what it should become. But since I was very busy with a start-up (which we successfully sold last August), I struggled to find the time to work on it. I did a lot of work that I never ended up releasing because I couldn’t find the time for testing and fixing the last few small bugs (though it has been in use in production with great success).

The hardest thing to find time for was always documentation and communication of the status, so today I’m taking the time to clarify since I get asked a lot:

I won’t be working on it any more.

But open source is a wonderful thing and anyone who wants to keep using it can fork it and do so.

Thanks to everyone who contributed features and fixes.

I apologize for letting it languish for so long, I had the best intentions to find some more time but now that I have a four-week old baby I know that it’s impossible.

A great success in it’s day

It felt great to be sitting in a session at RailsConf 2008 and hear the presenter recommend EC2 on Rails.

When I first created EC2 on Rails it was the first and only Rails AMI, and in fact it was the first public Ubuntu AMI that I know of (though Eric Hammond went on to create what later became the definitive Ubuntu public AMI and Canonical eventually produced official Ubuntu images).

In spite of the sparse documentation it was simple enough that many people used it either as-is or as a starting point for their own custom setup.

I think there’s still a great need for a simple open-source Rails server image, but now there are at least a couple of options, and the choices for all components of the Rails production stack have improved hugely.

Some of the custom functionality is now available via other projects like Marc-AndrĂ© Cournoyer’s mysql_s3_backup.

I’d do a few things differently

If I had the time to continue working on it I’d make some major changes in the architecture:

  • I’d use Chef to configure the image instead of a build script. This would allow running instances to be upgraded more easily, allow greater customization by the user, and allow the sharing of common customizations.
  • I’d stop using Capistrano for deployment, or at least move all the code that’s inside Capistrano recipes into scripts that exist on the server. (Chef-deploy looks promising but I haven’t had a chance to play with it yet).
  • I would provide better support for elastic clusters (i.e. adding and removing instances from the cluster).

I have a lot of thoughts on how those things would be achieved, feel free to get in touch with me if you are building something similar and want to chat about it.

The new and improved but unreleased version

The unreleased version (available on GitHub) has been substantially rewritten. It is now based on Nginx, and Phusion Passenger, and uses the awesome Varnish proxy for balancing across multiple instances (optionally with HTTP caching). As I mentioned it’s being used in production with great success, but there are still a few minor known issues and probably some untested areas.

Please feel free to fork it and give it new life.

Speaking at FutureRuby

I’ll be speaking at the FutureRuby conference, which will be held in Toronto from July 9-12. If it’s anything like last year’s RubyFringe conference (also put on by the hard-working Unspace crew) it will be a great time, and anything but your standard tech conference.

I’m looking forward to hearing some great talks and meeting lots of interesting new people (the evening events alone are worth the price of the ticket!).

FutureRuby

For more info check out the web site and follow @futureruby on Twitter.

Better Logging Rails plugin

I have created a Rails plugin that improves the log format. For more info on what it does and why, see the description on GitHub:

http://github.com/pauldowman/better_logging

EC2 on Rails version 0.9.9.1 released

I finally found the time to release a new version of EC2 on Rails. It fixes some bugs, updates some software (Rails 2.2, Rubygems 1.3.1, Ubuntu 8.04.2 LTS), and includes public images for the European EC2 region.

For a full list of changes see the change log.

My next priorities are:

  1. Integrating other people’s changes, especially Adam Greene’s huge changes (support for EBS and much more).
  2. Improving (or you could say fixing!) multi-instance support. It should be as easy to manage your app running on an EC2 cluster as it is on a single instance. I’m now using this myself so I finally have the motivation! :-)
  3. General robustness improvements.
  4. Documentation.

Please report any bugs using the RubyForge bug tracker or by email.

EC2 on Rails version 0.9.9 released

I released version 0.9.9 of EC2 on Rails a few weeks ago and announced it on the mailing list but forgot to mention it here. The main change was switching to version 8.04 (”Hardy”) of Ubuntu. See the change log for full details.