The Bottom Line
Cloning Internet Applications with Ruby is not your typical Ruby (or Rails) book. From the title, one might assume it's a Ruby on Rails book, but instead is uses Sinatra and Datamapper. Cloning Internet Applications with Ruby picks a number of popular websites and shows you how to write your own in Ruby. The background, intentions and challenges of implementing each of the sites is covered well. However, the implementation itself is presented in whole, without showing how one could build up to such an implementation. It's a good book, but for that reason, it's not for newbies.
- Interesting sites are chosen, with features that will be useful in many other sites.
- In-depth backgrounds are given for each site.
- It's not a Rails book, Sinatra and Datamapper are often easier to use and deserve attention too.
- The book is heavy on "mashups," integrating services from other sites.
- Some of the book is a year or more out of date as of publication date.
- Not much attention is given to how to build up these sites, only the completed clone is analyzed.
- A clone of TinyUrl, including traffic statistics with charts and maps.
- A clone of Twitter, implementing all major features and interfacing with OpenID and Gravatar.
- A clone of Flickr, which even manages to integrate a photo editing web service, Amazon S3, annotations.
- A clone of Facebook. This is easily the largest section, and is quite a detailed Facebook clone for a Sinatra app.
Guide Review - Cloning Internet Applications with Ruby
Cloning Internet Applications with Ruby sounds like an interesting title, and as you keep reading, it keeps getting better. First off, it's not a Rails book. While Rails is nice, this book opts to use Sinatra and Datamapper, with Haml for HTML generation. These allow for more freeform web application creation, and save time and space over a Rails application. They allow the author (and readers) to "cut to the chase." Even if you don't know how to use Sinatra, Datamapper or Haml, you'll learn fast, they're very simple to use.
One thing to note, the versions of DataMapper and Sinatra used are quite out of date as of the publication date of August 2010. Though this isn't a major stumbling block, you'll be googling a few error messages before you get any of these applications up and running.
At the beginning of each chapter, the author goes through quite a detailed analysis of each application to be cloned, how each feature works, the history of the application, etc. This, at first, seems to serve little purpose, but knowing these things gives you great perspective going into the rest of the chapter.
The next part of each chapter explains all the technologies used. Wherever possible, the author opts not to use gems or to implement features himself, but rather to interface with other web services. For instance, Amazon S3 is used for storage, Google Charts to produce graphs and maps, OpenID, an image editing web application, Gravatar, etc. Even if you're not interested in cloning any of the applications in the book, knowing how to interface with all of these services is invaluable, and can easily be applied to other web applications.
Finally, each chapter then goes into the nitty gritty details of the clone's implementation. However, what it doesn't do is give you any clues on how to build up from scratch. It's assumed you'll either know how to do that already. For this reason, this isn't a book for newbies either in Ruby, or web application development in general.
Cloning Internet Applications with Ruby has its faults, however, there are a lot of really good things to take away from this title. The book gets off to a bit of a weak start with some outdated information, but power through, and you'll find really great stuff throughout the rest of the book.