class RuboCop::Cop::Rails::EnvironmentComparison

This cop checks that Rails.env is compared using `.production?`-like methods instead of equality against a string or symbol.

@example

# bad
Rails.env == 'production'

# bad, always returns false
Rails.env == :test

# good
Rails.env.production?

Constants

MSG
SYM_MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/rails/environment_comparison.rb, line 50
def autocorrect(node)
  lambda do |corrector|
    corrector.replace(node.source_range, replacement(node))
  end
end
on_send(node) click to toggle source
# File lib/rubocop/cop/rails/environment_comparison.rb, line 40
def on_send(node)
  environment_str_comparison?(node) do |env_node|
    env, = *env_node
    add_offense(node, message: format(MSG, env: env))
  end
  environment_sym_comparison?(node) do |_|
    add_offense(node, message: SYM_MSG)
  end
end

Private Instance Methods

replacement(node) click to toggle source
# File lib/rubocop/cop/rails/environment_comparison.rb, line 58
def replacement(node)
  "#{node.receiver.source}.#{content(node.first_argument)}?"
end