From: Bill Atkins Date: 2005-03-26T04:14:15+09:00 Subject: Re: loading "plugins" That's a little heavy on memory (and time). Alternatively, you could do class Object # Object.inherited callback def Object.inherited new_class return unless @@classes @@classes << new_class end def self.start_log @@classes = [] end def self.end_log res = @@classes @@classes = nil res end end Object.start_log # require all plugins here new_classes = Object.end_log Bill On Sat, 26 Mar 2005 04:03:48 +0900, Patrick Hurley wrote: > Oops I realized you might want to "discover" what classes you loaded > so something like this might be closer: > > before_classes = [] > ObjectSpace.each_object(Class) { |obj| before_classes << obj } > > base= "." > Dir.glob("#{base}/*.rb").each { |plugin| require plugin } > > new_classes = [] > ObjectSpace.each_object(Class) { |obj| > new_classes << obj unless before_classes.include?(obj) > } > > And then you can further check the loaded classes (in new_classes > array) by using the respond_to? method (check to see if it is a Duck > :-) > > Patrick > > -- $stdout.sync = true "Just another Ruby hacker.".each_byte do |b| ('a'..'z').step do|c|print c+"\b";sleep 0.007 end;print b.chr end; print "\n"