Рубокоп. Выровняйте элементы хеш-литерала, если они занимают более одной строки

у меня есть код

# Filters
filter :name
filter :email
filter :organization_status, label: 'Status'
filter :subscriptions_subscription_status_id,
       as: :select,
       label: 'Subscription Status',
  collection: proc do
    Organization
      .includes(subscriptions: [:subscription_status])
      .map(&:subscriptions)
      .flatten
      .map(&:subscription_status)
      .uniq
  end

Рубокоп говорит: выравнивайте элементы хеш-литерала, если они занимают более одной строки.

collection: proc do
^^^^^^^^^^^^^^^^

Что я могу с этим сделать?


person mxgoncharov    schedule 26.11.2014    source источник


Ответы (4)


Я выравниваю :s и оборачиваю разделы в

# rubocop:disable AlignHash
# rubocop:enable AlignHash

(см. https://github.com/bbatsov/rubocop#disabling-cops-within-source-code)

С вашим кодом:

  # Filters
  filter :name
  filter :email
  filter :organization_status, label: 'Status'
  # rubocop:disable AlignHash
  filter :subscriptions_subscription_status_id,
         as: :select,
      label: 'Subscription Status',
 collection: proc do
   Organization
     .includes(subscriptions: [:subscription_status])
     .map(&:subscriptions)
     .flatten
     .map(&:subscription_status)
     .uniq
 end
  # rubocop:enable AlignHash
person Bob Mazanec    schedule 26.11.2014
comment
Что означает cf:? - person sofs1; 17.12.2019
comment
Я имел в виду что-то вроде см. также en.wikipedia.org/wiki/Cf. предполагает, что это должно быть что-то противоположное или контрастное. Упс. - person Bob Mazanec; 19.12.2019

В .rubocop.yml добавьте:

Style/AlignHash:
  Enabled: false
person Dorian    schedule 12.12.2014
comment
В первой строке отсутствует двоеточие. Должно быть Style/AlignHash:, но я не могу отредактировать, потому что меняется всего 1 символ. - person A5308Y; 05.05.2015

Вы также можете отключить его в своей .rubocop.yml конфигурации:

Style/Encoding:
  Enabled: false
person Bob Mazanec    schedule 26.11.2014

В RubyMine или IntelliJ, если вы будете следовать решению, предложенному IDE, это исправит его. По сути, IDE выравнивает код за вас.

person sofs1    schedule 19.12.2019