2015-01-09 60 views
0

我上課的命名空間,例如:紅寶石命名空間混入方法

module SocialSearch 
    module Scrapers 
    class TwitterScraper 
     # ... 
    end 
    end 
end 

我想創造Scrapers的方法,將所有的類中的命名空間內,但不這樣做手工在include Scrapers每一個擴展給定它們在Scrapers名稱空間內的類。

謝謝!

+0

有任何地方沒有命名空間在這個問題上,還是在Ruby中。模塊不是名稱空間。這兩個術語不能互換使用。 – meagar 2015-01-09 23:48:36

回答

1
SocialSearch::Scrapers.constants.each do 
    |k| k = SocialSearch::Scrapers.const_get(k) 
    k.extend(SocialSearch::Scrapers)if k.instance_of?(Class) 
end 

SocialSearch::Scrapers.constants.each do 
    |k| k = SocialSearch::Scrapers.const_get(k) 
    k.include(SocialSearch::Scrapers)if k.instance_of?(Class) 
end 
0

嘗試使用繼承:

class Scrapers 
    # your common methods for all scrapers 
end 

class TwitterScraper < Scrapers 
    # your twitter-related scraper setup; methods from Scrapers are visible here 
end 

class FacebookScraper < Scrapers 
    # your twitter-related scraper setup; methods from Scrapers are visible here 
end