Net::Amazon::S3 0.1.0

Net::Amazon::S3 is a simple, easy to use, pure Ruby implementation of the Amazon S3 REST API. It aims to provide a more Rubyish interface to the S3 API than other libraries and has no non-Ruby dependencies, so it's completely platform-independent.

I wrote this because I needed an S3 library for Crackup and the existing libraries left much to be desired. They all seemed to be based on Amazon's horrible and unnecessarily complex Ruby example code, which was unsettling. To make matters worse, none of them supported uploading from (or downloading to) IO streams, which meant entire files had to be read into memory for transfer (not exactly practical when you're working with multi-gigabyte files).

The API presented by Net::Amazon::S3 is very simple and allows you to do some pretty useful things with S3 in only a few lines of code. It also supports uploading from IO streams and downloading in chunks, which means it's usable with any size file (up to the 5 GB limit imposed by S3).

Net::Amazon::S3 can be installed via RubyGems with just a few keystrokes:

gem install net-amazon-s3

Complete API documentation (including examples) is installed along with the gem, or you can read it online.

Update: Marcel Molina, Jr. from 37signals has released a new S3 library, AWS::S3, that's much more complete and (in my opinion) much better than Net::Amazon::S3. Since he said nice things when he emailed to tell me about his project, and since I like AWS::S3 so much better anyway, I won't be developing Net::Amazon::S3 further.