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 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 © 2009 John Hyland. See LICENSE for details.