Here is mine. Nothing too extraordinary or different than other
solutions, but it is fairly short and readable.

class Module
  def attribute(x, &block)
    name, value = x.to_a[0] # produces a warning is x is a symbol
    ivar = "@#{name}"
    define_method(name) do
      if instance_variables.include?(ivar)
        instance_variable_get(ivar)
      else
        value || (instance_eval &block if block)
      end
    end
    attr_writer name
    define_method("#{name}?") { !!send(name) }
  end
end

As others have said, this was a cool quiz. While the meta-programming
part was interesting, I think this quiz is a better advertisement for
test-first coding than anything! Very cool and fun test suite. Thanks
Ara.

Ryan