class RuboCop::Cop::Rails::UnknownEnv
This cop checks that environments called with `Rails.env` predicates exist. By default the cop allows three environments which Rails
ships with: `development`, `test`, and `production`. More can be added to the `Environments` config parameter.
@example
# bad Rails.env.proudction? Rails.env == 'proudction' # good Rails.env.production? Rails.env == 'production'
Constants
- MSG
- MSG_SIMILAR
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 42 def on_send(node) unknown_environment_predicate?(node) do |name| add_offense(node.loc.selector, message: message(name)) end unknown_environment_equal?(node) do |str_node| name = str_node.value add_offense(str_node, message: message(name)) end end
Private Instance Methods
collect_variable_like_names(_scope)
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 55 def collect_variable_like_names(_scope) environments end
environments()
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 90 def environments cop_config['Environments'] end
message(name)
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 59 def message(name) name = name.to_s.chomp('?') # DidYouMean::SpellChecker is not available in all versions of Ruby, # and even on versions where it *is* available (>= 2.3), it is not # always required correctly. So we do a feature check first. See: # https://github.com/rubocop/rubocop/issues/7979 similar_names = if defined?(DidYouMean::SpellChecker) spell_checker = DidYouMean::SpellChecker.new(dictionary: environments) spell_checker.correct(name) else [] end if similar_names.empty? format(MSG, name: name) else format(MSG_SIMILAR, name: name, similar: similar_names.join(', ')) end end
unknown_env_name?(name)
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 86 def unknown_env_name?(name) !environments.include?(name) end
unknown_env_predicate?(name)
click to toggle source
# File lib/rubocop/cop/rails/unknown_env.rb, line 80 def unknown_env_predicate?(name) name = name.to_s name.end_with?('?') && !environments.include?(name[0..-2]) end