Why they fear the meta

Giles says It's Not Meta, It's Just Programming. Darn straight! The specific example he gives is the ability to add methods to specific instances, instead of to an entire class. As he demonstrates, this is invaluable for isolation when testing.

  # written this way to demonstrate eigenclass syntax
  class << @response
    def body
      ({:foo => "bar"}.to_xml(:root => "thing"))
    end
  end

Combine eigenclass methods with open classes, and almost any idiom can be automated. If you regularly add stubbed instance methods for testing purposes, why not write a helper for just that? For many common tasks, including this one, the work is already done. Here is a more literate version of the above code:

  # exact syntax depends on your choice of mocking library
  @response.stubs(:body).returns(some_canned_response)

If you are a n00b, this power is scary. Once you start treating code as data, the elegance of your code is dependent on your skill. You cannot hide behind the limitations of your programming language anymore, because there aren't any.

Get In Touch