class RuboCop::Cop::Betterment::ImplicitRedirectType

Require explicit redirect statuses in routes.rb. Permanent redirects (301) are cached by clients, which makes it difficult to change later, and/or reuse the route for something else.

@example

# bad
get '/', redirect('/dashboard')
get { |params, request| '/dashboard' }

# good
get '/', redirect('/dashboard', status: 301)
get(status: 302) { |params, request| '/dashboard' }

Constants

MSG
ROUTES_FILE_NAME

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/betterment/implicit_redirect_type.rb, line 46
def on_block(node)
  return unless routes_file?

  if block_form_with_options(node) { |options| options.none?(&method(:valid_status_option?)) } || block_form_without_options?(node)
    add_offense(node)
  end
end
on_send(node) click to toggle source
# File lib/rubocop/cop/betterment/implicit_redirect_type.rb, line 54
def on_send(node)
  return unless routes_file?

  if arg_form_with_options(node) { |options| options.none?(&method(:valid_status_option?)) } || arg_form_without_options?(node)
    add_offense(node)
  end
end

Private Instance Methods

routes_file?() click to toggle source
# File lib/rubocop/cop/betterment/implicit_redirect_type.rb, line 64
def routes_file?
  Pathname.new(processed_source.buffer.name).basename.to_s == ROUTES_FILE_NAME
end