blog

初めての Middleman シリーズ初めてのMiddleman:Helperを使ってGravatarのアイコンを表示する

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    今回はちょっとした小ネタです。Middlemanでブログ等にプロフィール情報を表示したいときアイコンも付けたいですよね。画像を直置きでも良いですが、Gravatarのアイコンを表示できるようにしてみたいと思います。Gravatarを使えばアイコンの変更もWeb上から行えるので便利です。

    必要なもの

    MiddlemanでGravatarのアイコンを表示するにはGravatarアカウントの登録メールアドレスが必要です。このメールアドレスを使ってイメージをリクエストします。リクエスト方法の詳細については公式のImage Requestsを参考にします。

    Middleman Helperを用意する

    まず、config.rbに必要なモジュールを読み込みます。この二つのモジュールはメールアドレスをHash化する、デフォルトアイコンのURLをエンコードするために使います。

    require 'digest/md5'
    require 'uri'
    

    Middleman Helper

    config.rbに下記のHelperを追加します。メールアドレスを渡すとGravatarのアイコン画像のURLを返すHelperです。引数周りは適当にカスタマイズしてください。

    helpers do
      def get_gravatar(email, size = 80, default = '')
        hash = Digest::MD5.hexdigest(email.chomp.downcase)
        default_url = URI.escape(default)
        "//www.gravatar.com/avatar/#{hash}?s=#{size}&d=#{default_url}"
      end
    end
    

    Gravatarアイコンを表示する

    単純に画像のURLだけを取得するのであれば<%= get_gravatar('hoge@fuga.com') %>のように指定します。返り値はhttp://www.gravatar.com/avatar/205e460b479e2e5b48aec07710c08d50のようにメールアドレスをHash化したURLとなります。

    オプションでリクエスト時のサイズ<%= get_gravatar('hoge@fuga.com', 200) %>、デフォルトアイコン<%= get_gravatar('hoge@fuga.com', 200, 'http://fuga.com/icon.png') %>を指定できます。

    Assets Helperを使って表示するには以下のようにURLを渡します。

    <%= image_tag get_gravatar('hoge@fuga.com', 200), :width => 200, :height => 200, :class => 'avatar' %>
    

    データファイルを使ってアイコン一覧を表示する

    authors.ymlというデータファイルを作り、回すことでアイコンの一覧が作れます。Proxyを使って動的ページを作ればAuthor別のページ作成も可能です。

    nukos_kitchen:
      name: 
        en: kitchen_nukos
      profile: プロフィール文章が入ります。
      email: hoge@fuga.com
      social:
        twitter: nukos_
      blog:
        name: Whiskers
        url: http://whiskers.nukos.kitchen
    
    hoge_fuga:
      name: 
        en: ...
    

    一覧を表示する方法はこんな感じ。

    <% data.authors.each do |key, author| %>
      <%= image_tag get_gravatar(author.email, 200), :width => 200, :height => 200, :class => 'avatar' %>
    <% end %>
    

    Middleman便利です。
    今回はここまで。また何か書きたくなったら紹介します。

    シリーズ

    1. 初めてのMiddleman:rbenv, bundler 環境でMiddlemanを使ったHello World
    2. 初めてのMiddleman:レイアウト機能でレイアウトとコンテンツを分離する
    3. 初めてのMiddleman:パーシャルを使ったコンテンツのモジュール化
    4. 初めてのMiddleman:SCSSのコンパイルとテンプレートの基礎
    5. 初めてのMiddleman:Sass MixinライブラリのBourbon, Neatを導入してみる
    6. 初めてのMiddleman:データファイルとデータファイルを使った動的ページ生成
    7. 初めてのMiddleman:サイトにブログ機能を追加する
    8. 初めてのMiddleman:Amazon S3にビルドされたファイルを同期する
    9. 初めてのMiddleman:HTML/CSS/JS/画像をビルド時に圧縮する
    10. 初めてのMiddleman:設定について
    11. 初めてのMiddleman:静的サイトのキャッシュとasset_hash拡張を使ったキャッシュのパージ
    12. 初めてのMiddleman:Middleman::S3Syncで使うAWS IAMユーザーのアクセスキー管理方法について
    13. 初めてのMiddleman:Helperを使ってGravatarのアイコンを表示する
    14. 初めてのMiddleman:アセットパイプラインを使った外部アセットファイルの読み込みと結合
    15. 初めてのMiddleman:Bowerを使ってjQueryなどのライブラリをロードする
    16. 初めてのMiddleman:スケルトンを自作する方法
    17. 初めてのMiddleman:Middleman Blogの記事データを使いやすく管理する方法
    18. 初めてのMiddleman:Middleman-blogのシングルブログを前提としたSkeletonを作った
    19. 初めてのMiddleman:Middleman-blogでマルチブログを試してSkeletonを作った
    20. 初めてのMiddleman:Markdown EngineをkramdownからRedcarpetに切り替える
    21. 初めてのMiddleman:RedcarpetとMiddleman::Rougeを使ったシンタックスハイライト
    22. 初めてのMiddleman:Middleman-Syntaxを使ったシンタックスハイライト
    23. 初めてのMiddleman:Middleman-Blogで記事毎に画像を管理する方法
    24. 初めてのMiddleman:Gulpを使ってサムネイル画像を生成する
    25. 初めてのMiddleman:Middleman-OGPのOGP画像指定を相対パスで設定する
    26. 初めてのMiddleman:Middleman-OGPでMiddleman-BLogにOGPを設定する
    27. 初めてのMiddleman:Middleman-Titleでタイトルタグを手軽に設定する
    28. 初めてのMiddleman:多言語化 - 言語ファイルの作成とヘルパーの埋め込み
    29. 初めてのMiddleman:Middleman-blogにカテゴリやシリーズなどのカスタムコレクションを追加する方法
    30. 初めてのMiddleman:Bowerで管理されているフォントファイルをインポートする

    コメント・フィードバック