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).
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 rdoc.info/projects/djspinmonkey/classy) or in the spec files.
-
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 © 2009 John Hyland. See LICENSE for details.