Class: Sail::Setting
Overview
Setting This is the model used for settings it contains all data definitions, validations, scopes and methods
Defined Under Namespace
Classes: UnexpectedCastType
Constant Summary
collapse
- FULL_RANGE =
(0...100).freeze
- SETTINGS_PER_PAGE =
8
- AVAILABLE_MODELS =
Dir["#{Rails.root}/app/models/*.rb"]
.map { |dir| dir.split("/").last.camelize.gsub(".rb", "") }.freeze
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from ValueCast
ab_test_get, ab_test_set, array_get, array_set, boolean_get, boolean_set, cron_get, cron_set, date_get, date_set, float_get, float_set, integer_get, integer_set, obj_model_get, obj_model_set, range_get, range_set, string_get, string_set, throttle_get, throttle_set, uri_get, uri_set
Class Method Details
.cast_setting_value(setting) ⇒ Object
66
67
68
69
70
|
# File 'app/models/sail/setting.rb', line 66
def self.cast_setting_value(setting)
return if setting.nil?
send("#{setting.cast_type}_get", setting.value)
end
|
.cast_value_for_set(setting, value) ⇒ Object
72
73
74
|
# File 'app/models/sail/setting.rb', line 72
def self.cast_value_for_set(setting, value)
send("#{setting.cast_type}_set", value)
end
|
.get(name) ⇒ Object
50
51
52
53
54
55
56
|
# File 'app/models/sail/setting.rb', line 50
def self.get(name)
Rails.cache.fetch("setting_get_#{name}", expires_in: Sail.configuration.cache_life_span) do
cast_setting_value(
Setting.select(:value, :cast_type).where(name: name).first
)
end
end
|
.load_defaults(override = false) ⇒ Object
92
93
94
95
96
97
98
99
100
101
|
# File 'app/models/sail/setting.rb', line 92
def self.load_defaults(override = false)
if File.exist?(config_file_path) &&
ActiveRecord::Base.connection.table_exists?(table_name)
destroy_all if override
config = YAML.load_file(config_file_path)
find_or_create_settings(config)
destroy_missing_settings(config.keys)
end
end
|
.reset(name) ⇒ Object
85
86
87
88
89
90
|
# File 'app/models/sail/setting.rb', line 85
def self.reset(name)
if File.exist?(config_file_path)
defaults = YAML.load_file(config_file_path)
set(name, defaults[name]["value"])
end
end
|
.set(name, value) ⇒ Object
58
59
60
61
62
63
64
|
# File 'app/models/sail/setting.rb', line 58
def self.set(name, value)
setting = Setting.find_by(name: name)
value_cast = cast_value_for_set(setting, value)
success = setting.update_attributes(value: value_cast)
Rails.cache.delete("setting_get_#{name}") if success
[setting, success]
end
|
.switcher(positive:, negative:, throttled_by:) ⇒ Object
76
77
78
79
80
81
82
83
|
# File 'app/models/sail/setting.rb', line 76
def self.switcher(positive:, negative:, throttled_by:)
setting = select(:cast_type).where(name: throttled_by).first
raise ActiveRecord::RecordNotFound, "Can't find throttle setting" if setting.nil?
raise UnexpectedCastType unless setting.throttle?
get(throttled_by) ? get(positive) : get(negative)
end
|
Instance Method Details
#display_name ⇒ Object
123
124
125
|
# File 'app/models/sail/setting.rb', line 123
def display_name
name.gsub(/[^a-zA-Z\d]/, " ").titleize
end
|