2

当我编写一个返回值的多行块时,我喜欢使用大括号而不是do-end以表明该块的目的是返回事物,而不是做事情。

Rubocop 的标准配置不允许这样做,rubocop -a并将任何多行块转换为do-end块。

# I like but Rubocop hates.
expect {
  delete :destroy, id: thing.to_param
}.to change(Thing, :count).by(-1)

# I don't like but Rubocop does.
expect do
  delete :destroy, id: thing.to_param
end.to change(Thing, :count).by(-1)

# That, we both like.
before do
  stub_api_calls
  admin_sign_in create(:super_admin)   
end

Rubocop 中是否有任何配置参数允许这种区分?

编辑:或者,至少,如果右括号后有一个点 (.),则可以避免更改括号块。

4

1 回答 1

2

我发现有一个名为Style/BlockDelimiters的 Cop 可以解决问题。配置为语义,它在功能块周围强制使用花括号,并在命令式代码周围执行..end。

这是我添加的内容.rubocop.yml

# Allow curly braces for functional blocks
BlockDelimiters:
  EnforcedStyle: semantic
于 2017-02-21T01:46:08.980 回答