Markus Jais wrote:
> hello
> 
> is there a way to get all classes defined within a module ?
> 
> something like this:
> 
> require "mymodule"
> classes = mymodule.classes_within_this_module

             ^^^^^^^^ what is this?

In ruby, modules and files are different things, though they are often 
in a one-to-one correspondence. I'll assume that you are interested in 
modules.

The following will give you all the classes defined in the scope of String.

   String.constants.map {|x| String.const_get x}.grep(Class)

But this includes things like Float that are defined in Object. So let's 
define:

   class Module
     def my_classes
       constants.map {|x| const_get x}.grep(Class)
     end
   end

Then you can do

   String.my_classes - String.superclass.my_classes

which will be empty, unless you add a class in String:

   class String
     class S; end
   end

after which the subtraction will return:

   [String::S]

One more twist: you may also want to subtract constants that come from a 
mixin module.

   module Enumerable
     class E
     end
   end

   String.my_classes - String.superclass.my_classes

   # ==> [String::S, Enumerable::E]

So let's define:

   class Module
     def my_own_classes
       my_classes - ancestors.map {|a|
         (a == self)? [] : a.my_classes
       }.flatten
     end
   end

   String.my_own_classes
   # ==> [String::S]