class RuboCop::Cop::Sequoiacap::FactoryClassUseString

Cop to tell developers to use :class => “MyClass” instead of :class => MyClass, because the latter slows down reloading zeus.

Constants

MSG

Public Instance Methods

on_send(node) click to toggle source
# File lib/rubocop/cop/sequoiacap/factory_class_use_string.rb, line 14
def on_send(node)
  return unless node.command?(:factory)

  class_pair = class_node(node)

  add_offense(class_pair) if class_pair && !string_class_name?(class_pair)
end

Private Instance Methods

class_node(node) click to toggle source

Return the descendant node that is a hash pair (:key => value) whose key is :class.

# File lib/rubocop/cop/sequoiacap/factory_class_use_string.rb, line 26
def class_node(node)
  node.descendants.detect do |e|
    e.is_a?(Parser::AST::Node) &&
        e.pair_type? &&
        e.children[0].children[0] == :class
  end
end
string_class_name?(class_pair) click to toggle source

Given a hash pair :class_name => value, is the value a hardcoded string?

# File lib/rubocop/cop/sequoiacap/factory_class_use_string.rb, line 35
def string_class_name?(class_pair)
  class_pair.children[1].str_type?
end