ruby - 允许返回的 block 使用大括号

标签 ruby rubocop

当我编写一个返回值的多行 block 时,我喜欢使用大括号而不是 do-end ,以便清楚地表明block 是返回事物,而不是做事物。

Rubocop 的标准配置不允许这样做,而 rubocop -a 会转换 do-end 中的任何多行 block block 。

# 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 中是否有任何配置参数可以实现这种区别?

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

最佳答案

我发现有一个警察,名叫 Style/BlockDelimiters这样就可以了。配置为语义,它在功能 block 周围强制使用大括号,并在命令性代码周围强制执行 do..end。

这是我添加到 .rubocop.yml 中的内容:

# Allow curly braces for functional blocks
BlockDelimiters:
  EnforcedStyle: semantic

关于ruby - 允许返回的 block 使用大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34506691/

相关文章:

ruby-on-rails - 无法写入未知属性 `client_mutation_id`

ruby-on-rails - EC2 实例在负载均衡器中停止服务

ruby-on-rails - Rspec:如何测试 ActiveRecord::Base.connection.execute

c# - IronRuby,如何将参数变量从 C# 传递到 Ruby?

ruby - "Assignment Branch Condition size for index is too high"是如何工作的?

ruby - 如果在线禁用 Rubocop 规则,是否需要重新启用它

ruby-on-rails - RubyInstaller 2.2.1 和 Rails - Rake 无法加载 Nokogiri

ruby-on-rails - Rubocop 唯一性验证应该使用唯一索引,在从某些特定值开始的值中

ruby-on-rails - rubocop 警察不同意 : Layout/EmptyLineAfterGuardClause vs Layout/TrailingWhitespace

ruby-on-rails - Atom-Editor:Rubocop 不适用于 atom