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
ありがとう、これは、モジュールを使いこなすことと、拡張すること、含まないこと、そしてそうでないことよりも簡単な方法です。私は別のアプローチでチュートリアル[リンク](http://thomasjo.com/2010/12/15/really-simple-and-naive-ruby-plugin-framework/)も見つけました。 –