at posts/single.html

tDiary のサイドバーにプロフィールを表示するプラグイン (profile.rb) を書いた

きっかけは hsbt さんの Twitter から。

また iddy が落ちている

そろそろ代替を本気で探す時期かなあ

これまでも、サイドバーにプロフィールを表示するプラグインとして、 iddy.jp のプロフィールを表示するiddy.rb があった。 ただ、最近は iddy.jp が不安定だったり、他にもプロフィールとして使えるサイトが増えてきたことから、新しく profile.rb プラグインを作ってみた。 複数のプロフィールサイトに対応していることが特徴。

ローカルでの Ruby1.8 環境と、この日記 (Ruby1.9環境) の両方で、とりあえず動くことを確認している。

ソースコード

他の contrib プラグインと同様に、 CodeRepos のリポジトリにコミット している。 スピード優先で書いたので、まだエラー処理が十分で無いかも。 テストコードは(ry

使い方

  1. tDiary の設定画面にて、 profile.rb を有効にする。
  2. ヘッダ・フッタの設定にて、好きな場所で profile プラグインを呼び出す。書式は以下の通り。
<%= profile(id, service) %>
  • id … 外部サービスでの(あなたの)ユーザID
  • service … 外部サービス。 :twitter, :friendfeed, :github, :iddy のいずれか選択。

例えば、 twitter の id が 'machu' の場合は、以下のように書く。

<%= profile('machu', :twitter) %>

第2引数はシンボル指定 (:twitter) にしてみたけど、文字列 ('twitter') で書いても OK 。

コンセプト

どのサービスでも API 経由で顔アイコンと属性を取得している。 なので、基本的にはサービスに応じた API を叩き、取得した XML を解析しているだけ。 ただ、 GitHub だけは顔アイコンを gravatar という別サービスに保存しているので、まず GitHub の API でメールアドレスを取得し、次にメールアドレスのハッシュ値をキーにして gravatar から顔アイコンを取得するという二段構成になっている。

また、 iddy.rb と同様に、取得したプロフィールを1時間キャッシュするようにしている。 フォーマットは PStore 形式。

ToDo

やるかもしれないし、やらないかもしれない。

  • テストコードを書く。
  • Profile モジュールのリファクタリング。似たような処理が存在する。
  • エラー処理をもう少ししっかりと。一部のプロフィールが未記入だとエラーになりそう。

関連する日記