Как опустить внешние скобки вокруг хеша неявных опций в Rubocop?

Рубокоп не ругается на код, где в параметр метода передается хеш с круглыми скобками, например:

user.set({ name: 'John', age: 45, permissions: { read: true } })

Мне бы хотелось, чтобы он считал правильными только такие строки:

user.set(name: 'John', age: 45, permissions: { read: true })

Я нашел эту проблему. Означает ли это, что я не смогу настроить для этого рубокоп?

🤔 А знаете ли вы, что...
Ruby позволяет создавать графические интерфейсы с помощью библиотеки Ruby-GNOME.


50
1

Ответ:

Решено

Поскольку аргументы ключевого слова меняются в Ruby 2.7 и 3.0, эти 2 больше не эквивалентны.

Иногда фигурные скобки необходимы для того, чтобы метод правильно понял аргументы.

Пример:

def foo(x = {}, y: 1)
  puts x.inspect
  puts y.inspect
end

foo({y: 2}) # {:y=>2}; 1
foo(y: 2) # {}; 2

Именно поэтому опция была удалена из Рубокопа в найденной вами задаче и вряд ли будет добавлена ​​повторно.