2012-08-01 64 views
1

目前我有几个类,每个类都处理不同的网站。它们的行为类似于同一类型,因为它们都具有方法crawl_item()在几个类中的一种方法中捕获异常的好方法

class CrawlA 
    def crawl_item 
    ... 
    A.create() 
    end 
end 

class CrawlB 
    def crawl_item 
    B.create() 
    end 
end 

现在,我要赶在调用这些crawl_item methods当一个模型验证异常,并执行相同的救护行动。什么是实施这个的好方法?

+0

我想我们可以假设,方法'crawl_item'每个班级不同,不是吗? – tokland 2012-08-01 12:45:15

+0

@tokland是的,他们爬行,但实现是非常不同的 – lulalala 2012-08-03 01:44:35

回答

3

保持干燥,你可以编写采用经典混合式结构的包装(模块+类包括):

module CrawlValidator 
    def with_validations 
    begin 
     yield 
    rescue => exc 
     ... 
    end 
    end 
end 

class CrawlA 
    include CrawlValidator 

    def crawl_item 
    with_validations { A.create } 
    end 
end 
相关问题