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 re-use 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