🌊
rspec で起きた Lint/AmbiguousBlockAssociation の直し方
Lint/AmbiguousBlockAssociation 公式の例を見てみます。
bad の例だと、block が a に対してか、 some_method に対してかがわからない。そのため ()
をつけてわかりやすくするルールです。
# bad
some_method a { |val| puts val }
# good
# With parentheses, there's no ambiguity.
some_method(a { |val| puts val })
# or (different meaning)
some_method(a) { |val| puts val }
# good
# Operator methods require no disambiguation
foo == bar { |b| b.baz }
# good
# Lambda arguments require no disambiguation
foo = ->(bar) { bar.baz }
今回自分が詰まったところは、つぎのようなテストで詰まった。
もちろん rubocop -A
をしても修正することができない。
rubocop issue を眺めていると rubocop#7486 に対応策があり、そちらを利用しました。
# bad
expect{ result }.not_to change { employees.reload.pluck(:id) }
# good
expect{ result }.not_to(change { employees.reload.pluck(:id) })
Discussion