Skip to content

Ruby 2.7 warning "Passing the keyword argument as the last hash parameter is deprecated"

Problem

Fix the warning Passing the keyword argument as the last hash parameter is deprecated.

See &2380 (comment 418910925)

See also https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/.

Deprecation warnings are off by default

In Ruby 2.7.2 depreciation warnings has been turn off by default - see https://bugs.ruby-lang.org/issues/17000.

To enable depreciation warnings temporarily in your code do:

Warning[:deprecated] = true

Solution

Don't pass kwargs as argument for positional parameter but pass a Hash instead.

Before

def foo(args)
end

foo(key: :value)

After

# EITHER
def foo(**args)
end

foo(key: :value)

# OR

def foo(args)
end

foo({ key: :value })

In some cases, we are mixing, kwargs with positional arguments or use double-splats (**) in the signature.

Before

def foo(args, key: :value)
end

foo(another: :bar)

After

def foo(key: :value, **args)
end

foo(another: :bar)

Making of

Downloaded latest warnings via #257438 (comment 420639703) and re-created via !47803 (closed).

Used https://gitlab.com/-/snippets/2020566 to create the list below.

Checklist

Passing the keyword argument as the last hash parameter is deprecated:

  • app/services/packages/composer/create_package_service.rb:13 - !47788 (merged)
    • spec/services/packages/composer/create_package_service_spec.rb:22
    • spec/requests/api/composer_packages_spec.rb:222
  • ee/spec/controllers/ee/admin/sessions_controller_spec.rb - !47911 (merged)
    • ee/spec/controllers/ee/admin/sessions_controller_spec.rb:22
    • ee/spec/controllers/ee/admin/sessions_controller_spec.rb:34
    • ee/spec/controllers/ee/admin/sessions_controller_spec.rb:48
  • ee/spec/controllers/ee/sessions_controller_spec.rb - !47911 (merged)
    • ee/spec/controllers/ee/sessions_controller_spec.rb:100
    • ee/spec/controllers/ee/sessions_controller_spec.rb:112
    • ee/spec/controllers/ee/sessions_controller_spec.rb:126
  • ee/spec/features/users/login_spec.rb - !48809 (merged)
    • ee/spec/features/users/login_spec.rb:22
  • ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb - !48809 (merged)
    • ee/spec/lib/gitlab/legacy_github_import/project_creator_spec.rb:19
  • lib/gitlab/application_context.rb:19 - !48827 (merged)
    • spec/lib/gitlab/application_context_spec.rb:8
  • spec/controllers/projects/issues_controller_spec.rb - !48887 (merged)
    • spec/controllers/projects/issues_controller_spec.rb:1132
    • spec/controllers/projects/issues_controller_spec.rb:1138
    • spec/controllers/projects/issues_controller_spec.rb:1145
  • spec/controllers/sessions_controller_spec.rb - !47530 (merged)
    • spec/controllers/sessions_controller_spec.rb:412
    • spec/controllers/sessions_controller_spec.rb:417
    • spec/controllers/sessions_controller_spec.rb:279
    • spec/controllers/sessions_controller_spec.rb:288
    • spec/controllers/sessions_controller_spec.rb:300
    • spec/controllers/sessions_controller_spec.rb:330
    • spec/controllers/sessions_controller_spec.rb:339
    • spec/controllers/sessions_controller_spec.rb:349
    • spec/controllers/sessions_controller_spec.rb:357
    • spec/controllers/sessions_controller_spec.rb:378
    • spec/controllers/sessions_controller_spec.rb:386
  • spec/features/admin/admin_mode/login_spec.rb - !48770 (merged)
    • spec/features/admin/admin_mode/login_spec.rb:130
  • spec/features/projects/show/no_password_spec.rb - !48770 (merged)
    • spec/features/projects/show/no_password_spec.rb:36
  • spec/features/users/login_spec.rb - !48770 (merged)
    • spec/features/users/login_spec.rb:318
    • spec/features/users/login_spec.rb:779
  • spec/graphql/resolvers/merge_requests_resolver_spec.rb - !47533 (merged)
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:61
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:69
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:78
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:79
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:80
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:93
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:105
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:113
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:121
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:129
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:137
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:145
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:156
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:162
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:174
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:180
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:188
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:194
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:204
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:213
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:217
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:228
    • spec/graphql/resolvers/merge_requests_resolver_spec.rb:232
  • spec/graphql/resolvers/project_merge_requests_resolver_spec.rb - !47789 (merged)
    • spec/graphql/resolvers/project_merge_requests_resolver_spec.rb:27
    • spec/graphql/resolvers/project_merge_requests_resolver_spec.rb:33
    • spec/graphql/resolvers/project_merge_requests_resolver_spec.rb:41
    • spec/graphql/resolvers/project_merge_requests_resolver_spec.rb:47
  • spec/lib/gitlab/auth/saml/user_spec.rb - !48770 (merged)
    • spec/lib/gitlab/auth/saml/user_spec.rb:427
    • spec/lib/gitlab/auth/saml/user_spec.rb:447
  • spec/lib/gitlab/ci/config/entry/processable_spec.rb - !48889 (merged)
    • spec/lib/gitlab/ci/config/entry/processable_spec.rb:363
  • spec/lib/gitlab/config/entry/configurable_spec.rb - !48889 (merged)
    • spec/lib/gitlab/config/entry/configurable_spec.rb:18
  • spec/lib/gitlab/diff/lines_unfolder_spec.rb - !48810 (merged)
    • spec/lib/gitlab/diff/lines_unfolder_spec.rb:191
  • spec/lib/gitlab/tracking/destinations/snowplow_spec.rb - !47913 (merged)
    • spec/lib/gitlab/tracking/destinations/snowplow_spec.rb:49
    • spec/lib/gitlab/tracking/destinations/snowplow_spec.rb:74
  • spec/lib/gitlab/tracking_spec.rb - !47913 (merged)
    • spec/lib/gitlab/tracking_spec.rb:54
  • spec/lib/gitlab/git/diff_spec.rb - !47541 (merged) !51573 (merged)
    • spec/lib/gitlab/git/diff_spec.rb:61
    • spec/lib/gitlab/git/diff_spec.rb:296
    • spec/lib/gitlab/git/diff_spec.rb:302
    • spec/lib/gitlab/git/diff_spec.rb:308
    • spec/lib/gitlab/git/diff_spec.rb:318
    • spec/lib/gitlab/git/diff_spec.rb:324
    • spec/lib/gitlab/git/diff_spec.rb:330
    • spec/lib/gitlab/git/diff_spec.rb:354
  • spec/lib/gitlab/legacy_github_import/project_creator_spec.rb
    • spec/lib/gitlab/legacy_github_import/project_creator_spec.rb:18
    • spec/lib/gitlab/legacy_github_import/project_creator_spec.rb:60
  • spec/models/service_spec.rb - !48804 (merged)
    • spec/models/service_spec.rb:248
    • spec/models/service_spec.rb:294
  • spec/support/helpers/multipart_helpers.rb:40 - !47791 (merged)
    • spec/lib/gitlab/middleware/multipart_with_handler_for_jwt_params_spec.rb:17
  • spec/support/helpers/workhorse_helpers.rb:88 - !47791 (merged)
    • spec/requests/lfs_http_spec.rb:1319
    • spec/requests/api/graphql/mutations/design_management/upload_spec.rb:33
    • ee/spec/requests/api/project_import_spec.rb:66
    • spec/requests/api/nuget_packages_spec.rb:170
  • spec/support/helpers/workhorse_helpers.rb:96 - !47791 (merged)
    • spec/requests/lfs_http_spec.rb:1319
    • spec/requests/api/graphql/mutations/design_management/upload_spec.rb:33
    • ee/spec/requests/api/project_import_spec.rb:66
    • spec/requests/api/nuget_packages_spec.rb:170
  • spec/lib/gitlab/config/entry/composable_hash_spec.rb:95 - !51573 (merged)
    • spec/lib/gitlab/config/entry/composable_hash_spec.rb:95
  • vendor/ruby/2.7.0/gems/activesupport-6.0.3.1/lib/active_support/cache.rb:330
    • spec/requests/api/merge_requests_spec.rb:1759
    • spec/requests/api/merge_request_approvals_spec.rb:36
    • spec/lib/gitlab/metrics/dashboard/cache_spec.rb:40
    • spec/requests/api/graphql/mutations/merge_requests/set_wip_spec.rb:45
    • ee/spec/requests/api/merge_requests_spec.rb:24
    • spec/controllers/projects_controller_spec.rb:109
    • spec/services/projects/unlink_fork_service_spec.rb:160
    • spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb:57
    • spec/services/metrics/dashboard/default_embed_service_spec.rb:49
    • ee/spec/requests/api/project_import_spec.rb:66
    • spec/controllers/dashboard_controller_spec.rb:54
    • spec/services/metrics/dashboard/custom_dashboard_service_spec.rb:57
    • ee/spec/requests/api/merge_request_approvals_spec.rb:284
    • spec/requests/api/graphql/metrics/dashboard_query_spec.rb:54
Edited by Peter Leitzen