Which class defined


#1

Hi,

I need to load scripts dynamically.

Is there a way to know about what
classes were defined by loading a script?

If not, can the Ruby system be asked for a collection
of subclasses for a particular Class?

thx


#2

On Wed, 15 Feb 2006, raving_ruby_rider wrote:

Is there a way to know about what
classes were defined by loading a script?

see dynaload

http://rubyforge.org/frs/?group_id=1024&release_id=3786
http://codeforpeople.com/lib/ruby/dynaload/dynaload-0.0.0/README

is use it for the very same.

If not, can the Ruby system be asked for a collection of subclasses for a
particular Class?

 harp:~ > cat a.rb
 class C
   class << self
     def children() @children ||= [] end
     def inherited(other) children << other and super end
     def descendants() children.inject([]){|d,c| d.push(c, 

*c.descendants)} end
end
end

 load "b.rb"

 p C::children
 p C::descendants
 p B::children
 p B::descendants


 harp:~ > cat b.rb
 class B < C; end
 class D < B; end


 harp:~ > ruby a.rb
 [B]
 [B, D]
 [D]
 [D]

regards.

-a


#3

On Wed, 2006-02-15 at 22:53 +0900, raving_ruby_rider wrote:

Is there a way to know about what
classes were defined by loading a script?

I’ve done something like this before:

    sc, ec = [], []
    # => [[], []]

    ObjectSpace.each_object(Class) { |c| sc << c }
    # => 471
    require 'generator'
    # => true
    ObjectSpace.each_object(Class) { |c| ec << c }
    # => 473

    new_classes = ec - sc
    # => [SyncEnumerator, Generator]

If not, can the Ruby system be asked for a collection
of subclasses for a particular Class?

See above (the argument to each_object).


#4

removed_email_address@domain.invalid wrote:

On Wed, 15 Feb 2006, raving_ruby_rider wrote:

Is there a way to know about what
classes were defined by loading a script?

see dynaload

http://rubyforge.org/frs/?group_id=1024&release_id=3786
http://codeforpeople.com/lib/ruby/dynaload/dynaload-0.0.0/README

There’s also
http://raa.ruby-lang.org/project/script/
http://redshift.sourceforge.net/script/doc/index.html


#5

thx 2 all.

i like the Script encapsulation


#6

Ross B. wrote:

If not, can the Ruby system be asked for a collection
of subclasses for a particular Class?

See above (the argument to each_object).

Heh. If you make your terminal black and green and run this:

ObjectSpace.each_object(Object) { |o| puts o }

… you will see the truth of the Matrix. :slight_smile:

-dave


#7

Dave C. removed_email_address@domain.invalid writes:

Heh. If you make your terminal black and green and run this:

ObjectSpace.each_object(Object) { |o| puts o }

… you will see the truth of the Matrix. :slight_smile:

-dave

You get used to it. I don’t even see the code. All I see is Symbol,
String, Array, …

Cypher.


#8

George O. wrote:

You get used to it. I don’t even see the code. All I see is Symbol,
String, Array, …

These show what gets mixed in from where:
http://www.insula.cz/dali/material/rubycl/
http://www.cafepress.com/mathomhouse.4631975