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 を付け加えれば、テキスト部分ごとに受け取ることも可能
[ツッコミを入れる]