Finding classes

I need to find classes that either:

  1. Includes a specific module

or

  1. Includes a specfic string in the class name

Either of the two is fine. This is in a Rails environment where I want
to
find all classes using one of the two rules above. The problem is that
the
classes I want to find probably aren’t “required” at the time of
searching
(ie ObjectSpace#each_object doesn’t find them as far as I can tell and
Module#included hasn’t been triggered).

Is it possible to do this?

Best regards,

Marcus

Tried this (doesn’t work):

class_names = Array.new
ObjectSpace.each_object { |obj| class_names << obj.name if 

obj.is_a?(Class)
&& obj.name.include?(“ChannelBehaviour”) }
behaviours = classes.uniq.map { |name| Class.const_get(name) }

Marcus B. wrote:

I need to find classes that either:

  1. Includes a specific module

or

  1. Includes a specfic string in the class name

require ‘enumerator’

ObjectSpace.enum_for(:each_object, Class).select { |x|
x.ancestors.include?(Module) }

ObjectSpace.enum_for(:each_object, Class).select { |x| x.name =~
/String/ }

On 8/30/06, Florian F. [email protected] wrote:

Marcus B. wrote:

require ‘enumerator’

ObjectSpace.enum_for(:each_object, Class).select { |x|
x.ancestors.include?(Module) }

ObjectSpace.enum_for(:each_object, Class).select { |x| x.name =~ /String/
}

Thanks for the answer. Unfortunately this won’t work as I explained in
my
previous mail. The classes aren’t required yet, only on the load path
(and
are auto-required by Rails when needed as I understand it), so I need to
find them there somehow.

/Marcus