Ruby 哈希对齐

Ruby Hash Alignment

我正在尝试更正请求测试文件中的 linter 错误。我有一个上下文块如下:

context 'when the request is valid' do
  before(:each) do
    post '/api/v1/budgets',headers: authenticated_header(@user), params: {
      budget: valid_attributes
    }
  end
end

但是,我不断收到以下错误:

C: Layout/ArgumentAlignment: Align the arguments of a method call if they span more than one line.

对齐此块的正确方法是什么?

查看 RuboCop Layout/ArgumentAlignment 文档时,我的猜测是:

context 'when the request is valid' do
  before(:each) do
    post '/api/v1/budgets',
         headers: authenticated_header(@user),
         params: { budget: valid_attributes }
  end
end

当你需要多行时 params 它应该看起来像这样:

context 'when the request is valid' do
  before(:each) do
    post '/api/v1/budgets',
         headers: authenticated_header(@user),
         params: {
           budget: valid_attributes
         }
  end
end

如果第一行有多个参数:

context 'when the request is valid' do
  before(:each) do
    post '/api/v1/budgets', headers: authenticated_header(@user), params: {
           budget: valid_attributes
         }
  end
end

当方法名称很长时,您还可以考虑将第一个参数移到下一行以减少对所有其他参数的意图:

context 'when the request is valid' do
  before(:each) do
    a_somewhat_long_method_name
      '/api/v1/budgets',
      headers: authenticated_header(@user),
      params: { budget: valid_attributes }
  end
end

以上内容让您使用默认配置 (:with_first_argument)。