Module: SwalRails::InitializerVersionCheck

Defined in:
lib/swal_rails/initializer_version_check.rb

Overview

Compares the user’s ‘config.initializer_version` against the gem’s ‘SwalRails::INITIALIZER_VERSION` and logs a one-line warning when the initializer is missing the stamp or trails the gem’s expected value.

Wired into the engine after ‘:load_config_initializers` so it sees whatever the user set. Silenced via `config.silence_initializer_warning = true`.

Class Method Summary collapse

Class Method Details

.default_loggerObject



40
41
42
# File 'lib/swal_rails/initializer_version_check.rb', line 40

def default_logger
  defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger ? Rails.logger : Logger.new($stderr)
end

.run!(logger: default_logger, config: SwalRails.configuration) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/swal_rails/initializer_version_check.rb', line 14

def run!(logger: default_logger, config: SwalRails.configuration)
  return if config.silence_initializer_warning

  message = stale_message(config)
  return unless message

  logger.warn(message)
end

.stale_message(config) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/swal_rails/initializer_version_check.rb', line 23

def stale_message(config)
  user = config.initializer_version
  current = SwalRails::INITIALIZER_VERSION

  return nil if user == current

  regen = "Run `bin/rails g swal_rails:install --skip-layout --force` to regenerate, or set " \
          "`config.silence_initializer_warning = true` to silence."

  if user.nil?
    "[swal_rails] config/initializers/swal_rails.rb predates v#{current} " \
      "(no `config.initializer_version` set). New options may be missing. #{regen}"
  else
    "[swal_rails] initializer template advanced to v#{current} (yours: v#{user}). #{regen}"
  end
end