discourse/lib/site_settings/local_process_provider.rb
Erick Guan 468a8fcd20 FEATURE: Site settings defaults per locale
This change-set allows setting different defaults for different locales. 

It also:

- Adds extensive testing around site setting validation

- raises deprecation error if site setting has the default property based on env

- relocated site settings for dev and tests in the initializer

- deprecated client_setting in the site setting's loading process

- ensure it raises when a enum site setting being set

- default_locale is promoted to `required` category.

- fixes incorrect default setting and validation

- fixes ensure type check for site settings

- creates a benchmark for site setting

- sets reasonable defaults for Chinese
2017-08-02 12:24:19 -04:00

42 lines
755 B
Ruby

module SiteSettings; end
class SiteSettings::LocalProcessProvider
attr_accessor :current_site
Setting = Struct.new(:name, :value, :data_type) unless defined? SiteSettings::LocalProcessProvider::Setting
def settings
@settings[current_site] ||= {}
end
def initialize
@settings = {}
self.current_site = "test"
end
def all
settings.values
end
def find(name)
settings[name]
end
def save(name, value, data_type)
# NOTE: convert to string to simulate the conversion that is happening
# when using DbProvider
value = value.to_s
settings[name] = Setting.new(name, value, data_type)
end
def destroy(name)
settings.delete(name)
end
def clear
@settings[current_site] = {}
end
end