Thank you all so much. I did it like you said, with a set of models not based on ActiveRecord.
Best regards, Cristóbal On Jul 13, 5:01 am, Conrad Taylor <[email protected]> wrote: > On Tue, Jul 12, 2011 at 9:46 AM, Ramon Leon <[email protected]>wrote: > > > > > > > > > > > On 07/12/2011 08:42 AM, Conrad Taylor wrote: > > >> The above class can be refactored as to the following: > > >> class SiteFactory > >> def self.create( site ) > >> site.new > >> end > >> end > > > I'm just curious, what exactly is the point of this class? > > > Now, we can rewrite our calling routine to the following: > > >> [ HerSite, HisSite ].each do | klass | > >> site = SiteFactory.create( klass ) > >> Spider.crawl_site( site ) > >> end > > > Seems needlessly verbose, why not just get rid of the factory that isn't > > doing anything and just do... > > > [ HerSite, HisSite ].each do | klass | > > Spider.crawl_site(klass.new) > > end > > > In fact, why not just... > > > Site.subclasses.each { | klass | Spider.crawl_site(klass.new) } > > Yes, the above is possible but I can see where just getting all the > subclasses of an > class might night be what you want. > > > Forgive me, I'm a Smalltalker, but this whole explicit factory business and > > explicit arrays of classes just looks too Java'ish in an object system with > > meta classes and reflection. Is there some reason you wouldn't just reflect > > the subclasses? Is there some reason for a factory that does nothing? Even > > if you need a factory, why wouldn't you just use class methods on Site? > > Next, the Ruby language 1.9.2/1.9.3dev doesn't support a built in method > called subclasses like Smalltalk. Thus, one could implement a subclasses > method in the Ruby language as follows: > > class Class > def subclasses > ObjectSpace.each_object(Class).select { |klass| klass < self } # select > all the methods that are derived from self (i.e. Site). > end > end > > This requires opening a class called Class and defining a method called > subclasses. Furthermore, one can use a built in Ruby hook method call > inherited to arrive at the same result. For example, > > class Site > > @subclasses = [] > > class << self > attr_reader :subclasses > end > > def self.inherited( klass ) > @subclasses << klass > end > > def to_s > puts "using #{self.class}#to_s" > end > > def crawl > puts "using #{self.class}#crawl version 0" > end > > end > > Ramon, you're correct in saying that SiteFactory class could be remove for a > much more concise solution. > > -Conrad > > > > > > > > > > > -- > > Ramon Leon > >http://onsmalltalk.com > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby on Rails: Talk" group. > > To post to this group, send email to > > rubyonrails-talk@googlegroups.**com<[email protected]> > > . > > To unsubscribe from this group, send email to > > rubyonrails-talk+unsubscribe@**googlegroups.com<rubyonrails-talk%2Bunsubscr > > [email protected]> > > . > > For more options, visit this group athttp://groups.google.com/** > > group/rubyonrails-talk?hl=en<http://groups.google.com/group/rubyonrails-talk?hl=en> > > . -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

