classy

Classy is a collection of metaprogramming-heavy modules which you can extend in order to give various capabilities to your Ruby classes. For example, SubclassAware lets a class know about all of its subclasses (and sub-subclasses, etc), and Aliasable lets you refer to classes via symbols (useful for creating friendly DSLs).

Examples

class Parent
extend Aliasable
extend SubclassAware
extend Templatable

templatable_attr :awesomeness, :temperature
awesomeness :fairly

aka :pop
end

class ChildA
aka :kid1
end

class ChildB
aka :kid2
end

Parent.find(:kid1)      # => ChildA
Parent.subclasses       # => [ ChildA, ChildB ]
Parent.new.awesomeness  # => :fairly

More extensive documentation and example code can be found in the RDoc for each module (available online at http://rdoc.info/projects/djspinmonkey/classy) or in the spec files.

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright (c) 2009 John Hyland. See LICENSE for details.