We've been pretty busy on the blog this summer reviewing some of the interesting technologies that the Ruby and Rails worlds are working with. We tried to mix in some introductory materials and some more advanced ones. In case you missed them, we thought we'd do a quick review, particularly since we've had quite an increase in blog readership over the Summer.
Rails and Deployment
Yehuda Katz talked about the challenges of refactoring Rails, (in two posts) and then about his five favorite things about Rails 3. His vote: a new bundler, a new ActionController architecture, the new Responder object, ActiveModel (which brings ORM pluggability) and much better performance. Carl Lerche also chipped in with some tips for how to boost Rails performance. Top tips: eager loading, leveraging the database and keeping the request cycle simple.
One of the most popular posts of the summer was Sudara Williams take on app server bloat, and bad ActiveRecord behavior that can get you in trouble. One interesting point was that looking for Rails or Ruby memory leaks as the source of big memory consumption jumps is usually the very last thing you should worry about. There were some great comments and extra tips in the comments, so be sure to read them all.
Taylor Weibley blogged about managing background jobs in Rails. The big takeaway, benchmark your workload and track completion and failure rates like a hawk. And Greg Nokes talked about sharding for Rails -- to be avoided as long as you can because it complicates life greatly, but is eventually inevitable.
All Things Ruby
Charlie Nutter kicked off our JRuby series with a brief introduction, and then wrote about how to script Java libraries using JRuby, and built a MIDI keyboard app to show it in action. Tom Enebo then went over how to bring your favorite Ruby features to Java APIs when you're accessing those libraries from JRuby, and covered decoration, delegation, blocks. Brian Ford kicked off the summer with a tour of RubySpec and later went through the mechanics of a Ruby compile from text to bytecode. Stay tuned for the next post on how a Ruby compiler goes from bytecode to machine code.
Key Value Stores & Search
Kirk Haines kicked off his series on key-value stores for Ruby with an introduction to this class of non-relational stores, and why you might look at them as an alternative to the tried and true relational database.
First up was an overview of Tokyo Cabinet, a family of key-value stores created by mixi -- the Facebook of Japan. Tokyo Cabinet is more than just simple key-value stores though, it also offers b-tree storage and fixed length array storage. In Kirk's evaluation, it looks super-fast as well as nice and mature.
Next up was Cassandra, an eventually consistent, fully distributed, highly scalable data store created by the Facebook crew. Cassandra's model is a little bit of twist on a simple key value store, but it can really be the right solution if you think you're going to need Amazon or Facebook like datastore scaling at a compelling cost. Finally, Kirk did an introduction to Redis, great if you need speed, persistence and you can tolerate some data loss. Stay tuned for more entries in Kirk's list. Next up: MongoDB!
Another interesting post was Avrohom Katz's post explaining five ways to improve your use of Sphinx text-search.
Development Tools and Testing
And stay tuned for more great technology posts for the fall!