【56日目】【1日20分のRailsチュートリアル】【第7章】デバッガーの使い方とGravatar画像の表示
今日は「7.1.3 デバッガー」から。
7.1.3 デバッガー
へー。byebug
はもうGemfileに書いてるのですぐ使えるらしい。
showアクションにデバッガーを追加。
app/controllers/users_controller.rb
def show @user = User.find(params[:id]) debugger end
サーバー起動して/users/1にアクセス。デバッガーを試してみます。
$ rails server -b $IP -p $PORT : [1, 9] in /home/ubuntu/workspace/sample_app/app/controllers/users_controller.rb 1: class UsersController < ApplicationController 2: def show 3: @user = User.find(params[:id]) 4: debugger => 5: end 6: 7: def new 8: end 9: end (byebug)
デバッガー差し込んだ箇所にアクセスするとRailsサーバーがbyebugのプロンプトを表示してくれるそう。
Railsコンソールのようにコマンド実行できてデータの中身とか見れるらしい。便利!
(byebug) @user.name "Michael Hartl" (byebug) @user.email "mhartl@example.com" (byebug) params[:id]
Ctrl-Dでデバッガー終了。
アプリの挙動で困ったらこれでデバッグすればいいのか~。
デバッグが終わったらshowアクション内のdebuggerの行を削除してしまいましょう (リスト7.7)。
削除しました。
7.1.4 Gravatar画像とサイドバー
画像の情報をデータベースとかに保存するわけではないんのかな…?まぁ追々分かるか。
Gravatarは無料のサービスで、プロファイル写真をアップロードして、指定したメールアドレスと関連付けることができます。
プロファイル写真を変更したい、ってときに便利ですよね。
わざわざサービス毎にプロファイル写真を変える必要がなくなって、Gravatarの写真変えるだけでいいから。
(ただ私は対応してるサービスで使ってるのはWordPressぐらいかな…)
ここでは、リスト7.8のようにgravatar_forヘルパーメソッドを使用してGravatarの画像を利用できるようにします。
app/views/users/show.html.erb
<% provide(:title, @user.name) %> <h1> <%= gravatar_for @user %> <%= @user.name %> </h1>
利便性を考えてgravatar_forをUsersコントローラに関連付けられているヘルパーファイルに置くことにしましょう。
デフォルトでgravatar_forメソッドが用意されてるのかな、って思ったら違った。
これから追加します。
Gravatarにはメールアドレスをハッシュ化したものを渡す必要がある、と。
Rubyでは、Digestライブラリのhexdigestメソッドを使用したMD5ハッシュアルゴリズムが実装されています。
ふむふむ。
app/helpers/users_helper.rb
module UsersHelper # 引数で与えられたユーザーのGravatar画像を返す def gravatar_for(user) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}" image_tag(gravatar_url, alt: user.name, class: "gravatar") end end
これで/users/1
のページを表示すると、、、
画像が表示されました!お手軽!!
ここにはデフォルトのGravatar画像が表示されていますが、これはデフォルトのメールアドレスuser@example.comが本当のメールアドレスではないためです。
Gravatarに登録されていないメールアドレスを渡すとデフォルトの画像が表示されるってことかー。
アプリケーションでカスタムGravatarを利用できるようにするために、update_attributes (6.1.5) を使用してデータベース上のユーザー情報を更新します。
Railsコンソールでユーザー情報を更新。
$ rails console >> user = User.first >> user.update_attributes(name: "Example User", ?> email: "example@railstutorial.org", ?> password: "foobar", ?> password_confirmation: "foobar") => true
/users/1
を再読み込みすると、、、
おぉー!画像取れてる!
ここではユーザーのメールアドレスに example@railstutorial.org を使用しました (図7.8)。このメールアドレスはRailsチュートリアルのロゴでも使用されています。
Gravatarにexample@railstutorial.orgが登録されてて、プロファイル画像が取得できてる、ってことかー。
今日はここまで。
画像表示ってテンション上がる。
プロフィール画像なら自前のサービス内で管理しなくても外部サービスを使う、って手もあるんだなぁ。
今日の作業時間は【31分】。
次は「7.1.4 Gravatar画像とサイドバー」のユーザー情報ビューのレイアウトを変更するところから。