ruby-on-rails - 我可以按文件将 RuboCop Rails/DynamicFindBy 方法列入白名单吗

标签 ruby-on-rails ruby capybara rubocop

RuboCop 的 Rails/DynamicFindBy cop 在遇到 Capybara 的(而不是 Rail 的)find_by_id 方法时给出误报。
显然有一种方法可以将方法列入白名单,以便警察忽略它们。请参阅http://rubocop.readthedocs.io/en/latest/cops_rails/#railsdynamicfindby (提到白名单属性)。

我想将find_by_id列入白名单,但针对我的测试/集成目录中的某些文件(带有 capybara 测试的文件)。这可能吗?

(我知道我可以逐个文件地关闭整个警察,但我不想完全关闭警察。我也知道我可以关闭警察的一部分文件,或逐行,但这些不是首选解决方案。)

最佳答案

无法逐个文件地执行此操作。最接近的方法是在目录级别上进行特定配置,方法是将另一个 .rubocop.yml 配置文件放入其中。

乍一看这似乎是一个解决方案:

# .rubocop.yml
Rails/DynamicFindBy:
  Include:
    - tests/integrations/first_test.rb
    - tests/integrations/second_test.rb
  Whitelist:
    - find_by_id

但是 Include 的意思是“包含用于检查”,而不是“包含用于配置”,因此这实际上完全排除了警察检查的所有其他项目文件。 (如果其他文件一开始就没有违规行为,您就不会注意到这一点。)

剩下两个选择:

  1. 使用另一个配置文件将 /integrations 中的所有文件列入白名单 #find_by_id
  2. 使用内联禁用和启用。

前者可能是推荐的,除非有充分的理由说明为什么在其他集成测试中不允许使用 #find_by_id

关于ruby-on-rails - 我可以按文件将 RuboCop Rails/DynamicFindBy 方法列入白名单吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45721592/

相关文章:

ruby - 如何定义专门用于变量作用域的 block 类型

ruby-on-rails - Rails 应用程序和 goliath api 以及数据库/模型共享

ruby-on-rails-3 - 如何配置 capybara 与Poltergeist一起使用?

ruby-on-rails - cucumber 中的http基本身份验证测试

mysql - 根据关联对象的数量查询事件记录

ruby-on-rails - Ruby on Rails : Dropzone js, 正在获取 [object Object],但为什么呢?

ruby-on-rails - 更改 I18n 翻译时如何避免重新启动服务器?

ruby - 每行一个html标签的正则表达式

ruby-on-rails-3 - rspec 忽略skip_before_filter?

ruby-on-rails - 从今天起在 ruby​​ 中获取接下来 7 天名称的数组