class RuboCop::Cop::Rails::HttpStatus
Enforces use of symbolic or numeric value to define HTTP status.
@example EnforcedStyle: symbolic (default)
# bad render :foo, status: 200 render json: { foo: 'bar' }, status: 200 render plain: 'foo/bar', status: 304 redirect_to root_url, status: 301 head 200 # good render :foo, status: :ok render json: { foo: 'bar' }, status: :ok render plain: 'foo/bar', status: :not_modified redirect_to root_url, status: :moved_permanently head :ok
@example EnforcedStyle: numeric
# bad render :foo, status: :ok render json: { foo: 'bar' }, status: :not_found render plain: 'foo/bar', status: :not_modified redirect_to root_url, status: :moved_permanently head :ok # good render :foo, status: 200 render json: { foo: 'bar' }, status: 404 render plain: 'foo/bar', status: 304 redirect_to root_url, status: 301 head 200
Constants
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/http_status.rb, line 56 def on_send(node) http_status(node) do |hash_node_or_status_code| status = if hash_node_or_status_code.hash_type? status_code(hash_node_or_status_code) else hash_node_or_status_code end return unless status checker = checker_class.new(status) return unless checker.offensive? add_offense(checker.node, message: checker.message) do |corrector| corrector.replace(checker.node.loc.expression, checker.preferred_style) end end end
Private Instance Methods
checker_class()
click to toggle source
# File lib/rubocop/cop/rails/http_status.rb, line 76 def checker_class case style when :symbolic SymbolicStyleChecker when :numeric NumericStyleChecker end end