もぐてっく

人は1つ歳を取る度、1ビットづつ大きくなれると信じてた。

mikutter3.5のUserMixinでユーザーアイコンにスキンの画像を使いたいとき

UserMixinを混ぜ込んだ自作のユーザーモデルのアイコンを、みくったーちゃん(スキンのicon.png)にしたい場合です。

  • UserMixinは自身のprofile_image_urlフィールドをキーにして、Photo::PhotoからPixbufを得ている。なので、ユーザーモデルのprofile_image_urlにアイコン画像のURLを入れておけば良い。
  • みくったーちゃんスキン画像のURLはSkin["icon.png"].uri.pathで得られる(※)。

※Photo::Photoは"file://hoge/fuga.png"みたいなfile://スキームのURLが解釈できない(バグ?)ので、URI::path()を使って/から始まるUNIXパス形式で渡してやる必要がありました。ってこれまたWindowsでハマるパターンじゃん。。。


コード的にはこんな感じになります。

user = DashButtonUser.new_ifnecessary({
  :uri => URI.parse("dashbutton://singleton"),
  :name => "Amazon Dash Button",
  :idname => "Dashボタン",
  :profile_image_url => Skin["icon.png"].uri.path
})