`def self.#{name}() nil end` is the initial definition of the class attribute to nil if `self.#{name}=` is never called.

Down below in [Line 42](https://github.com/ismasan/oat/pull/11/files#diff-d77723de91a79ea50201025570e08ec0R42), self.#{name}() gets redefined with a value after `self.#{name}=` is called.

Oat doesn't use `def self.#{name}?()` but it allows for coercion into a truthy value when calling `value?` I can remove it if you'd like, but it'll exist if we're using the active support version if active support is loaded.

I'll make the change to only define these things if they aren't already defined, I agree that it makes sense.
Rails before 2.3 call this functionality class_inheritable_accessor, so for active support 2.2 and earlier this functionality will "kind of" exist twice, but this functionality extracted from active support 3.2 is the most functionally complete without requiring ruby 1.9. The version from rails 4 looks much better because it can make use of ruby 1.9's define_singleton_method.