From: Michael Winterstein on
Suppose I have a module that's essentially used as a namespace, like
this:

module Castle

class King < Royalty; end

class Queen < Royalty; end

class Guard < Commoner; end

class Dragon_keeper < Commoner; end

end


Is there some way I could later create a list, say Castle_dwellers that
would come out with all the classes defined therein? I would expect an
array, something like [:King,:Queen,:Guard,:Dragon_keeper]. Or would I
have to add them 'manually' to the list?
--
Posted via http://www.ruby-forum.com/.

From: Roger Pack on
Michael Winterstein wrote:
> Suppose I have a module that's essentially used as a namespace, like
> this:
>
> module Castle

Castle.constants
--
Posted via http://www.ruby-forum.com/.

From: burke on
> Castle.constants

Pretty much. This will also return any other constants you make in the
namespace -- for example, if you had Castle::Location = "Scotland",
you'd also get "Location" back. If that causes you problems, you can
do:

irb(main):034:0> Castle.constants.select{|e|Castle.const_get
(e).kind_of? Class}
=> ["King", "Guard", "Queen", "Dragon_keeper", "Royalty", "Commoner"]