У меня есть следующий класс:
class XXX
def aa
end
def authorized?
false
end
def bb
end
end
И хотите убедиться, что метод authorized?
присутствует в Rubocop. Следующий код работает в консоли Rubocop:
code = "
class XXX
def aa
end
def authorized?
false
end
def bb
end
end
"
node = RuboCop::ProcessedSource.new(code, RUBY_VERSION.to_f).ast
NodePattern.new('(class ... (begin (def :aa ...)(def :authorized? ...)(def :bb ...) ) )').match(node)
Последняя строка возвращает true
. Однако я не хочу зависеть от каких-либо методов. Поэтому я заменил последнюю строку на
NodePattern.new('(class ... (begin (...)(def :authorized? ...)(...) ) )').match(node)
И это работает, код не зависит от имени методов. Но! Я также хочу, чтобы он работал, когда нет других методов или если есть еще методы.
По сути, конечная цель — проверить, определен ли метод в классе. Как я могу это сделать?