Ruby Rubocop。 MutableConstant - 不检测冻结

时间:2016-12-16 22:01:37

标签: ruby-on-rails ruby rubocop

我写了一个带有几个参数列表的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: how to freeze an array constant generated with splat但我的已经是数组了,所以我觉得它不适用于我/不应该调用to_a。

1 个答案:

答案 0 :(得分:0)

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