From ce0d134147707cf7037784fe703837ca1627ea21 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 30 Jan 2024 10:39:01 -0500 Subject: [PATCH] Add `redirect_with_vary` to `AllowedMethods` for `Style/FormatStringToken` cop (#28973) --- .rubocop.yml | 9 +++++++++ config/routes.rb | 12 ++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 6998941144..330c40de1b 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -174,6 +174,15 @@ Style/ClassAndModuleChildren: Style/Documentation: Enabled: false +# Reason: Route redirects are not token-formatted and must be skipped +# https://docs.rubocop.org/rubocop/cops_style.html#styleformatstringtoken +Style/FormatStringToken: + inherit_mode: + merge: + - AllowedMethods # The rubocop-rails config adds `redirect` + AllowedMethods: + - redirect_with_vary + # Reason: Enforce modern Ruby style # https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax Style/HashSyntax: diff --git a/config/routes.rb b/config/routes.rb index c4f862acaf..bb088821fd 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,12 +104,12 @@ Rails.application.routes.draw do confirmations: 'auth/confirmations', } - # rubocop:disable Style/FormatStringToken - those do not go through the usual formatting functions and are not safe to correct - get '/users/:username', to: redirect_with_vary('/@%{username}'), constraints: ->(req) { req.format.nil? || req.format.html? } - get '/users/:username/following', to: redirect_with_vary('/@%{username}/following'), constraints: ->(req) { req.format.nil? || req.format.html? } - get '/users/:username/followers', to: redirect_with_vary('/@%{username}/followers'), constraints: ->(req) { req.format.nil? || req.format.html? } - get '/users/:username/statuses/:id', to: redirect_with_vary('/@%{username}/%{id}'), constraints: ->(req) { req.format.nil? || req.format.html? } - # rubocop:enable Style/FormatStringToken + with_options constraints: ->(req) { req.format.nil? || req.format.html? } do + get '/users/:username', to: redirect_with_vary('/@%{username}') + get '/users/:username/following', to: redirect_with_vary('/@%{username}/following') + get '/users/:username/followers', to: redirect_with_vary('/@%{username}/followers') + get '/users/:username/statuses/:id', to: redirect_with_vary('/@%{username}/%{id}') + end get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }