Sha256: 8fe1ad68bc94e3cb7f46cc49318ba86dbbb6ec7f58484325fc5bae14063a0f79
Contents?: true
Size: 1.06 KB
Versions: 17
Compression:
Stored size: 1.06 KB
Contents
# frozen_string_literal: true module RuboCop module Cop module Rails # This cop checks for the use of `I18n.locale=` method. # # The `locale` attribute persists for the rest of the Ruby runtime, potentially causing # unexpected behavior at a later time. # Using `I18n.with_locale` ensures the code passed in the block is the only place `I18n.locale` is affected. # It eliminates the possibility of a `locale` sticking around longer than intended. # # @example # # bad # I18n.locale = :fr # # # good # I18n.with_locale(:fr) do # end # class I18nLocaleAssignment < Base MSG = 'Use `I18n.with_locale` with block instead of `I18n.locale=`.' RESTRICT_ON_SEND = %i[locale=].freeze def_node_matcher :i18n_locale_assignment?, <<~PATTERN (send (const {nil? cbase} :I18n) :locale= ...) PATTERN def on_send(node) return unless i18n_locale_assignment?(node) add_offense(node) end end end end end
Version data entries
17 entries across 17 versions & 2 rubygems