Patch #1321 » 0001-precache-all-settings.patch
| app/models/setting.rb | ||
|---|---|---|
| 41 | 41 |
@@available_settings["plugin_#{id}"] = {'default' => plugin.settings[:default], 'serialized' => true}
|
| 42 | 42 |
end |
| 43 | 43 |
|
| 44 |
@@settings = {}
|
|
| 45 |
find(:all).each do |setting| |
|
| 46 |
@@settings[setting.name] = setting |
|
| 47 |
end |
|
| 48 |
|
|
| 44 | 49 |
validates_uniqueness_of :name |
| 45 | 50 |
validates_inclusion_of :name, :in => @@available_settings.keys |
| 46 | 51 |
validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' }
|
| ... | ... | |
| 119 | 124 |
def self.find_or_default(name) |
| 120 | 125 |
name = name.to_s |
| 121 | 126 |
raise "There's no setting named #{name}" unless @@available_settings.has_key?(name)
|
| 122 |
setting = find_by_name(name)
|
|
| 127 |
setting = @@settings[name] if @@settings.has_key? name
|
|
| 123 | 128 |
setting ||= new(:name => name, :value => @@available_settings[name]['default']) if @@available_settings.has_key? name |
| 124 | 129 |
end |
| 125 | 130 |
end |