Sha256: 20683a7799cfef31cf2f21395462d3eda550f4697097ba69e381818ea865ad71

Contents?: true

Size: 970 Bytes

Versions: 4

Compression:

Stored size: 970 Bytes

Contents

# frozen_string_literal: true

module RailsMiniProfiler
  class ApplicationController < ActionController::Base
    include Pagy::Backend

    rescue_from ActiveRecord::RecordNotFound, with: ->(error) { handle(error, 404) }

    before_action :check_current_user

    protected

    def present(model, presenter_class = nil, **kwargs)
      klass = presenter_class || "RailsMiniProfiler::#{model.class.to_s.demodulize}Presenter".constantize
      presenter = klass.new(model, view_context, **kwargs)
      yield(presenter) if block_given?
      presenter
    end

    private

    def handle(error, status = 500)
      respond_to do |format|
        format.html { redirect_back(fallback_location: profiled_requests_path, alert: error.to_s) }
        format.json { render status: status, json: { message: error.to_s } }
      end
    end

    def check_current_user
      redirect_back(fallback_location: root_path) unless User.get(request.env).present?
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_mini_profiler-0.6.0 app/controllers/rails_mini_profiler/application_controller.rb
rails_mini_profiler-0.5.0 app/controllers/rails_mini_profiler/application_controller.rb
rails_mini_profiler-0 app/controllers/rails_mini_profiler/application_controller.rb
rails_mini_profiler-0.4.0 app/controllers/rails_mini_profiler/application_controller.rb