繁体   English   中英

Ruby Rubocop。 MutableConstant-未检测到冻结

[英]Ruby Rubocop. MutableConstant - not detecting freeze

我编写了一个lib / animal.rb,其中包含多个参数列表,我想在控制器中引用该列表并将其添加到我的参数列表中。 之所以这样做,是因为我在多个位置使用了此列表,并且不想在代码中堆满大量对该库的引用。

调节器

ANIMAL_TYPE_INPUT_PARAMS = *Animals::ANIMAL_TYPE_PARAMS.freeze

....

def familar_params
  params.permit(ANIMAL_TYPE_INPUT_PARAMS, OTHER_PARAM_LIST....)
end

lib / animal.rb

module Animal

  # param lists
  ANIMAL_TYPE_PARAMS = [
    :animal_has_fur, :animal_id, :animal_weight
  ].freeze
end

从功能上来说,它工作得很好,但是我看到一个奇怪的rubocop错误。 我宁愿不禁用此部分的MutableConstant(禁用rubocop通常是您需要付费的创可贴)。

Rubocop错误

app/controllers/api/v1/example_controller.rb:55:24: C: Freeze mutable objects assigned to constants.
  ANIMAL_TYPE_INPUT_PARAMS = *Animals::ANIMAL_TYPE_PARAMS.freeze
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我调查了这个问题: Ruby rubocop:如何冻结由splat生成的数组常量但是我的数组已经是数组,所以我觉得它不适用于我/不必调用to_a。

正如@drenmi所建议的,这是rubocop的较旧版本,给了我这个错误。 一旦我升级到0.46.0,该错误就不再存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM