Project

General

Profile

Patch #1321 » 0002-remove-settings-cache-which-only-worked-per-request.patch

remove not-really-functional caching - Philip Hofstetter, 2008-05-28 22:56

View differences:

app/controllers/application.rb
31 31
  end
32 32
  
33 33
  def user_setup
34
    # Check the settings cache for each request
35
    Setting.check_cache
36 34
    # Find the current user
37 35
    User.current = find_current_user
38 36
  end
app/models/setting.rb
50 50
  validates_inclusion_of :name, :in => @@available_settings.keys
51 51
  validates_numericality_of :value, :only_integer => true, :if => Proc.new { |setting| @@available_settings[setting.name]['format'] == 'int' }  
52 52

  
53
  # Hash used to cache setting values
54
  @cached_settings = {}
55
  @cached_cleared_on = Time.now
56
  
57 53
  def value
58 54
    v = read_attribute(:value)
59 55
    # Unserialize serialized settings
......
69 65
  
70 66
  # Returns the value of the setting named name
71 67
  def self.[](name)
72
    v = @cached_settings[name]
73
    v ? v : (@cached_settings[name] = find_or_default(name).value)
68
    find_or_default(name).value
74 69
  end
75 70
  
76 71
  def self.[]=(name, v)
77 72
    setting = find_or_default(name)
78 73
    setting.value = (v ? v : "")
79
    @cached_settings[name] = nil
80 74
    setting.save
81 75
    setting.value
82 76
  end
......
106 100
    per_page_options.split(%r{[\s,]}).collect(&:to_i).select {|n| n > 0}.sort
107 101
  end
108 102
  
109
  # Checks if settings have changed since the values were read
110
  # and clears the cache hash if it's the case
111
  # Called once per request
112
  def self.check_cache
113
    settings_updated_on = Setting.maximum(:updated_on)
114
    if settings_updated_on && @cached_cleared_on <= settings_updated_on
115
      @cached_settings.clear
116
      @cached_cleared_on = Time.now
117
      logger.info "Settings cache cleared." if logger
118
    end
119
  end
120 103
  
121 104
private
122 105
  # Returns the Setting instance for the setting named name
(2-2/2)