Which class defined

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

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]

regards.

-a

···

On Wed, 15 Feb 2006, raving_ruby_rider wrote:

--
judge your success by what you had to give up in order to get it.
- h.h. the 14th dali lama

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).

···

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

--
Ross Bamford - rosco@roscopeco.REMOVE.co.uk

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

···

ara.t.howard@noaa.gov 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

--
      vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Ross Bamford wrote:

···

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).

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

thx 2 all.

i like the Script encapsulation

Dave Cantrell <ruby-talk@deadcantrant.com> 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.

George Ogata wrote:

Dave Cantrell <ruby-talk@deadcantrant.com> 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, ...

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