2012-08-01 4 views
1

현재 여러 클래스가 있으며 각 클래스는 서로 다른 사이트를 처리합니다. 그들은 모두 같은 유형으로 행동합니다. 의미는 모두 crawl_item()입니다.여러 클래스 중 하나의 메서드에서 예외를 catch하는 좋은 방법

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

+0

@tokland 예 그들은 크롤링을하지만 구현은 상당히 다릅니다. – lulalala

답변

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 
관련 문제