我正在写一些有点像Facebook的共享链接预览。可扩展处理程序/插件架构的Ruby结构
我想使它很容易就在一个新的文件拖放为每一个新的网站,我想写一个自定义的解析器新的网站扩展。我有设计模式的基本概念,但没有足够的模块经验来指定细节。我确信在其他项目中有很多类似的例子。
结果应该是这样的:
> require 'link'
=> true
> Link.new('http://youtube.com/foo').preview
=> {:title => 'Xxx', :description => 'Yyy', :embed => '<zzz/>' }
> Link.new('http://stackoverflow.com/bar').preview
=> {:title => 'Xyz', :description => 'Zyx' }
和代码将是这样的:
#parsers/youtube.rb
module YoutubeParser
url_match /(youtube\.com)|(youtu.be)\//
def preview
get_stuff_using youtube_api
end
end
#parsers/stackoverflow.rb
module SOFParser
url_match /stachoverflow.com\//
def preview
get_stuff
end
end
#link.rb
class Link
def initialize(url)
extend self with the module that has matching regexp
end
end
谢谢,这是一个比搞乱模块,扩展和包括更简单的方法,而不是。我还用另一种方法找到了一个教程[link](http://thomasjo.com/2010/12/15/really-simple-and-naive-ruby-plugin-framework/)。 –