2012-08-01 2 views
1

Actuellement, j'ai plusieurs classes, dont chacune traite des sites différents. Ils agissent comme le même type, dans le sens où ils ont tous la méthode crawl_item().Bonne façon d'attraper l'exception dans une méthode parmi plusieurs classes

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

class CrawlB 
    def crawl_item 
    B.create() 
    end 
end 

Maintenant, je veux attraper une exception de validation du modèle lorsque vous appelez l'un de ces crawl_item methods et effectuer la même action de sauvetage. Quel serait un bon moyen de mettre en œuvre cela?

+0

Je suppose que nous pouvons supposer que les méthodes 'crawl_item' sont différentes dans chaque classe, ne sont-ils pas? – tokland

+0

@tokland oui ils font crawl mais les implémentations sont assez différentes – lulalala

Répondre

3

pour le garder sec, vous pouvez écrire un emballage en utilisant la structure de mélange en classique (module + classe comprennent):

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 
Questions connexes