2007-02-20
■ [Plagger][ruby] Plagger meets Ruby
この前のRuby勉強会@関西-14で発表したときの資料を公開します。
PlaggerのプラグインをRubyで書く方法について、図とか例とかを交えつつ解説する、という感じでやらせてもらいました。 30分弱。
いやー、feedalizerとかfeedtoolsとかHpricotとMechanize便利すぎという話も入れようかと 思ってたんだけど、時間的にも容量的にも余裕がなかったので残念ながらカット。
スライドのデザインは http://gift.her.jp/pp_template/ のものを使わせてもらいました。スライド作成意欲が2割くらいアップしました。 ありがとうございます。
まとめを以下に置いておきます。
RubyでPlaggerのプラグインを書こう
(1)RubyからPlaggerに入力
- module: Subscription::Config config: feed: - url: "script:ruby make_feed.rb" - module: CustomFeed::Script
Ruby側では、フィードのXMLかYAMLを出力する
print YAML.dump( "title" => "hogehoge diary", "entry" => entries.map{|ent| { "title" => ent.title, "author" => ent.author, "link" => "http://.../#{ent.id}", "date" => ent.date, "body" => ent.message.toutf8, } })
(2)Rubyをフィルタにする
- module: Filter::Pipe config: command: "ruby some_filter.rb" encoding: euc-jp
Ruby側では、HTMLを受け取ってHTMLを返す*1
例(案):Filter::RubyMan Filter::Tateyomi
(3)PlaggerからRubyへ出力
- module: Publish::Pipe config: command: 'ruby feed_writer.rb'
Ruby側では、YAMLを受け取る(ただしパッチが必要→[Plagger] Publish::PipeがYAMLを吐けるようにしてみた)
例:publish_rubysdl.rb
*1 yamlにtext-only: 1 を付け加えれば、テキスト部分ごとに受け取ることも可能