mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 04:53:43 +08:00
4c9ed7bd85
Post-zeitwerk, rails has deprecated autoloading modules during initialization and forces all autoloaded modules to be reloaded after initialization. Requiring the file explicitly prevents autoloading and therefore prevents the state on SiteSetting being trashed which was causing the problem here.
40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# load up git version into memory
|
|
# this way if it changes underneath we still have
|
|
# the original version
|
|
Discourse.git_version
|
|
|
|
if GlobalSetting.skip_redis?
|
|
# Requiring this file explicitly prevents it from being autoloaded and so the
|
|
# provider attribute is not cleared
|
|
require File.expand_path('../../../app/models/site_setting', __FILE__)
|
|
|
|
require 'site_settings/local_process_provider'
|
|
Rails.cache = Discourse.cache
|
|
SiteSetting.provider = SiteSettings::LocalProcessProvider.new
|
|
return
|
|
end
|
|
|
|
reload_settings = lambda {
|
|
RailsMultisite::ConnectionManagement.safe_each_connection do
|
|
begin
|
|
SiteSetting.refresh!
|
|
|
|
unless String === SiteSetting.push_api_secret_key && SiteSetting.push_api_secret_key.length == 32
|
|
SiteSetting.push_api_secret_key = SecureRandom.hex
|
|
end
|
|
rescue ActiveRecord::StatementInvalid
|
|
# This will happen when migrating a new database
|
|
end
|
|
end
|
|
}
|
|
|
|
reload_settings.call
|
|
|
|
if !Rails.configuration.cache_classes
|
|
ActiveSupport::Reloader.to_prepare do
|
|
reload_settings.call
|
|
end
|
|
end
|