Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby on Rails | around_filterでController#actionの前後に処理を追加

概要

around_filterでController#actionの前後に処理を追加

内容

around_filterでController#actionの前後に処理を追加します。

サンプル

処理の開始終了にログ表示を追加してみます。
開始時間、開始パラメータ、終了時間を出力してみます。

コード

application_controller.rb

class ApplicationController
  around_filter :logging_filter
  # 他の処理
  def logging_filter
    class_method = "#{params[:controller].capitalize}Controller##{params[:action]}"
    start_time = Time.now.instance_eval { self.to_i * 1000 + (usec/1000) }
    logger.debug "start #{class_method} #{Time.now.strftime("%Y/%m/%d %H:%M:%S.%L")}"
    logger.debug "params = #{params}"
    ret = yield
    end_time = Time.now.instance_eval { self.to_i * 1000 + (usec/1000) }
    logger.debug "end   #{class_method} #{Time.now.strftime("%Y/%m/%d %H:%M:%S.%L")} - 処理時間#{(end_time - start_time).to_s} ミリ秒"
  end
  # 他の処理
end

実行ログ

start SigninController#signin 2013/07/23 23:16:35.961
params = {"utf8"=>"✓", "authenticity_token"=>"ndAo6Fkd17pwo8o7h87cmnx7GrWBnRdn29+TULJ0GLw=", "signin_form"=>{"login"=>"hoge", "password"=>"hage"}, "commit"=>"サインイン", "controller"=>"signin", "action"=>"signin"}
end   SigninController#signin 2013/07/23 23:16:35.979 - 処理時間18 ミリ秒