Also, I hadn't thought of doing:

class << self
    attr_accessor :var
end

That's probably easy enough that it makes my second set of code pointless.
It's apparently equivalent to:

cinst_writer(*args)
    class << self
       method(:attr_writer)
    end.call *args
end

And so on.

Makes things quite a bit easier, I guess. :)

- Dan