Sha256: d9846014aca805c3458d9a481ef0694872ab88e47df09340b394255986e90328
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Platanus # Pundit should not be included in specific controllers. Prefer # including it in the ApplicationController instead. # # @example # # bad # class ApplicationController < ActionController::Base # end # # class FooController < ApplicationController # include Pundit # end # # # bad # class ApplicationController < ActionController::Base # end # # class FooController < ApplicationController # include Pundit::Authorization # end # # # good # class ApplicationController < ActionController::Base # include Pundit # end # # class FooController < ApplicationController # end # # # good # class ApplicationController < ActionController::Base # include Pundit::Authorization # end # # class FooController < ApplicationController # end # class PunditInApplicationController < Base MSG = '`Pundit` should be included only in the `ApplicationController`.' def_node_matcher :get_include_pundit_node, <<~PATTERN (class _ _ `$( send nil? :include (const {nil? | (const _ :Pundit)} {:Pundit | :Authorization}) )) PATTERN def_node_matcher :application_controller?, <<~PATTERN (class (const nil? :ApplicationController) `(const (const nil? :ActionController) :Base) ...) PATTERN def on_class(node) pundit_include_node = get_include_pundit_node(node) return unless pundit_include_node && !application_controller?(node) add_offense(pundit_include_node) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rubocop-platanus-0.2.0 | lib/rubocop/cop/platanus/pundit_in_application_controller.rb |