Class: RuboCop::Cop::Rails::HelperInstanceVariable

Inherits:
Base
  • Object
show all
Defined in:
lib/rubocop/cop/rails/helper_instance_variable.rb

Overview

Checks for use of the helper methods which reference instance variables.

Relying on instance variables makes it difficult to reuse helper methods.

If it seems awkward to explicitly pass in each dependent variable, consider moving the behavior elsewhere, for example to a model, decorator or presenter.

Provided that a class inherits ‘ActionView::Helpers::FormBuilder`, an offense will not be registered.

Examples:

# bad
def welcome_message
  "Hello #{@user.name}"
end

# good
def welcome_message(user)
  "Hello #{user.name}"
end

# good
class MyFormBuilder < ActionView::Helpers::FormBuilder
  @template.do_something
end

Constant Summary collapse

MSG =
'Do not use instance variables in helpers.'

Instance Method Summary collapse

Instance Method Details

#on_ivar(node) ⇒ Object



43
44
45
46
47
# File 'lib/rubocop/cop/rails/helper_instance_variable.rb', line 43

def on_ivar(node)
  return if inherit_form_builder?(node)

  add_offense(node)
end

#on_ivasgn(node) ⇒ Object



49
50
51
52
53
# File 'lib/rubocop/cop/rails/helper_instance_variable.rb', line 49

def on_ivasgn(node)
  return if node.parent.or_asgn_type? || inherit_form_builder?(node)

  add_offense(node.loc.name)
end