class RuboCop::Cop::AnyCable::InstanceVars

Checks for instance variable usage inside subscriptions.

@example

# bad
class MyChannel < ApplicationCable::Channel
  def subscribed
    @post = Post.find(params[:id])
    stream_from @post
  end
end

# good
class MyChannel < ApplicationCable::Channel
  def subscribed
    post = Post.find(params[:id])
    stream_from post
  end
end

Constants

MSG

Public Instance Methods

on_class(node) click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb, line 30
def on_class(node)
  find_nested_ivars(node) do |nested_ivar|
    add_offense(nested_ivar)
  end
end

Private Instance Methods

find_nested_ivars(node) { |child| ... } click to toggle source
# File lib/anycable/rails/compatibility/rubocop/cops/anycable/instance_vars.rb, line 38
def find_nested_ivars(node, &block)
  node.each_child_node do |child|
    if child.ivasgn_type? || child.ivar_type?
      yield(child)
    elsif child.children.any?
      find_nested_ivars(child, &block)
    end
  end
end