class RuboCop::Cop::ThreadSafety::InstanceVariableInClassMethod

end
end
end
instance_variable_set(“@#{key}”, value)
define_singleton_method(“#{key}=”) do |value|
%i[uri port].each do |key|
class Host
end
end
end
@table_name = name
def table_name(name)
class << self
class Model
end
end
Notifier.new(@info).deliver
@info = validate(info)
def self.notify(info)
class User
# bad
@example
Avoid instance variables in class methods.

def class_method_definition?(node)

def class_method_definition?(node)
  in_defs?(node) ||
    in_def_sclass?(node) ||
    singleton_method_definition?(node)
end

def in_def_sclass?(node)

def in_def_sclass?(node)
  defn = node.ancestors.find do |ancestor|
    ancestor.type == :def
  end
  defn&.ancestors&.any? do |ancestor|
    ancestor.type == :sclass
  end
end

def in_defs?(node)

def in_defs?(node)
  node.ancestors.any? do |ancestor|
    ancestor.type == :defs
  end
end

def instance_variable_call?(node)

def instance_variable_call?(node)
  instance_variable_set_call?(node) || instance_variable_get_call?(node)
end

def on_ivar(node)

def on_ivar(node)
  return unless class_method_definition?(node)
  return if synchronized?(node)
  add_offense(node, location: :name, message: MSG)
end

def on_send(node)

def on_send(node)
  return unless instance_variable_call?(node)
  return unless class_method_definition?(node)
  return if synchronized?(node)
  add_offense(node, message: MSG)
end

def singleton_method_definition?(node)

def singleton_method_definition?(node)
  node.ancestors.any? do |ancestor|
    next unless ancestor.children.first.is_a? AST::SendNode
    ancestor.children.first.command? :define_singleton_method
  end
end

def synchronized?(node)

def synchronized?(node)
  node.ancestors.find do |ancestor|
    next unless ancestor.block_type?
    s = ancestor.children.first
    s.send_type? && s.children.last == :synchronize
  end
end