class RuboCop::Cop::ThreadSafety::ClassAndModuleAttributes
Avoid mutating class and module attributes.
They are implemented by class variables, which are not thread-safe.
@example
# bad class User cattr_accessor :current_user end
Constants
- MSG
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/thread_safety/class_and_module_attributes.rb, line 42 def on_send(node) return unless mattr?(node) || class_attr?(node) || singleton_attr?(node) add_offense(node, message: MSG) end
Private Instance Methods
defined_in_singleton_class?(node)
click to toggle source
# File lib/rubocop/cop/thread_safety/class_and_module_attributes.rb, line 56 def defined_in_singleton_class?(node) node.ancestors.each do |ancestor| case ancestor.type when :def then return false when :sclass then return true else next end end false end
singleton_attr?(node)
click to toggle source
# File lib/rubocop/cop/thread_safety/class_and_module_attributes.rb, line 51 def singleton_attr?(node) (attr?(node) || attr_internal?(node)) && defined_in_singleton_class?(node) end