GIANT ROBOTS SMASHING INTO OTHER GIANT ROBOTS

Written by thoughtbot

Klang and Strongbox

We’ve been running Ruby on Rails training classes since September. Classes are running online:

Since graduating, our alumni have been building great stuff. Here’s a selection of their work.

Klang

Klang is a small record label. Alumni Mark Cornick built their Rails app.

From Mark:

It combines a blog-style news section, a product catalog w/ a (not fully automated) shopping cart, a show listing, and some other features. Behind the scenes, there’s Shoulda and Factory Girl for testing, and I recently replaced file_column with Paperclip and restful_authentication with Clearance.

If you want to see a well-written, well-tested Rails app’s full source code, Mark has has put the full source code on GitHub. Very cool! The question, where can I see real-world Rails app source code often comes up on Ruby mailing lists. Point them to Klang.

As if that wasn’t enough, Mark has made Klang’s RunCodeRun builds public. For those unfamiliar with RunCodeRun, it’s a hosted Continuous Integration service from Relevance.

Strongbox

Strongbox is Ruby gem by Spike Ilacqua that provides Public Key Encryption for ActiveRecord.

From Spike:

The idea isn’t new, I originally did this is Perl five or so years ago, and the most popular post on my blog is a how-to I wrote a year ago.

I wrote a gem for internal use at the same time I wrote the post, but I never published it. My testing was weak, and I didn’t want to put it out in the world without better coverage. Enter Advanced Rails Training. The class really helped me get my head around testing and TDD, and that’s how I’ve been approaching all of my projects. I re-built the gem using TDD and posted it to GitHub.

This is a cool idea and has a nice API:

class User < ActiveRecord::Base
  encrypt_with_public_key :secret,
    :key_pair => File.join(RAILS_ROOT,'config','keypair.pem'),
end

user.secret.decrypt 'password'

Great job, Mark and Spike! We can’t wait to see what the growing ranks of alumni make next.