Performance: Before and after filters
MEDIUM IMPACT
This affects server response time and perceived page load speed by adding processing steps before or after controller actions.
class PostsController < ApplicationController before_action :load_user, only: [:index, :show, :edit, :update, :destroy] before_action :check_permissions, only: [:edit, :update, :destroy] after_action :log_request, only: [:create, :update, :destroy] def index @posts = Post.all end private def load_user @user = User.find(session[:user_id]) end def check_permissions redirect_to root_path unless @user.admin? end def log_request RequestLogger.log(request) end end
class PostsController < ApplicationController before_action :load_user before_action :check_permissions before_action :log_request def index @posts = Post.all end private def load_user @user = User.find(session[:user_id]) end def check_permissions redirect_to root_path unless @user.admin? end def log_request RequestLogger.log(request) end end
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Filters run on all actions | N/A (server-side) | N/A | N/A | [X] Bad |
| Filters limited to needed actions | N/A (server-side) | N/A | N/A | [OK] Good |