Class: RuboCop::Cop::Betterment::NonStandardActions
- Inherits:
-
RuboCop::Cop
- Object
- RuboCop::Cop
- RuboCop::Cop::Betterment::NonStandardActions
- Defined in:
- lib/rubocop/cop/betterment/non_standard_actions.rb
Constant Summary collapse
- MSG_GENERAL =
'Use a new controller instead of custom actions.'
- MSG_RESOURCE_ONLY =
"Resource route refers to a non-standard action in it's 'only:' param. #{MSG_GENERAL}".freeze
- MSG_ROUTE_TO =
"Route goes to a non-standard controller action. #{MSG_GENERAL}".freeze
Instance Method Summary collapse
- #not_to_or_action?(sym) ⇒ Boolean
- #on_block(node) ⇒ Object
- #resource_with_only(node) ⇒ Object
- #route_to(node) ⇒ Object
- #routes?(node) ⇒ Object
Instance Method Details
#not_to_or_action?(sym) ⇒ Boolean
21 22 23 |
# File 'lib/rubocop/cop/betterment/non_standard_actions.rb', line 21 def not_to_or_action?(sym) !%i(to action).include?(sym) end |
#on_block(node) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/rubocop/cop/betterment/non_standard_actions.rb', line 33 def on_block(node) if routes?(node) node.each_descendant(:send) do |descendant_node| check_resource_with_only(descendant_node) || check_raw_route(descendant_node) end end end |
#resource_with_only(node) ⇒ Object
17 18 19 |
# File 'lib/rubocop/cop/betterment/non_standard_actions.rb', line 17 def_node_matcher :resource_with_only, <<-PATTERN (send nil? {:resource :resources} _ (hash <(pair (sym :only) {(array (sym $_)*) (sym $_*)} ) ...> )) PATTERN |
#route_to(node) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/rubocop/cop/betterment/non_standard_actions.rb', line 26 def_node_matcher :route_to, <<~PATTERN (send nil? {:match :get :post :put :patch :delete} ({str sym} $_) (hash { <(pair (sym ${:to :action}) ({str sym} $_)) ...> (pair (sym $#not_to_or_action?) $_)* })?) PATTERN |
#routes?(node) ⇒ Object
12 13 14 |
# File 'lib/rubocop/cop/betterment/non_standard_actions.rb', line 12 def_node_matcher :routes?, <<-PATTERN (block (send (send (send (const nil? :Rails) :application) :routes) :draw) ...) PATTERN |