Commit 72253b6a2f4e42e74912ed8465d8dbbe1de9397a
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/22' of http://git.gitorious.org/noosfero/noosf…
…ero into merge-requests/22
Showing
4 changed files
with
22 additions
and
3 deletions
Show diff stats
app/models/environment.rb
| ... | ... | @@ -236,17 +236,17 @@ class Environment < ActiveRecord::Base |
| 236 | 236 | |
| 237 | 237 | # Enables a feature identified by its name |
| 238 | 238 | def enable(feature) |
| 239 | - self.settings["#{feature}_enabled"] = true | |
| 239 | + self.settings["#{feature}_enabled".to_sym] = true | |
| 240 | 240 | end |
| 241 | 241 | |
| 242 | 242 | # Disables a feature identified by its name |
| 243 | 243 | def disable(feature) |
| 244 | - self.settings["#{feature}_enabled"] = false | |
| 244 | + self.settings["#{feature}_enabled".to_sym] = false | |
| 245 | 245 | end |
| 246 | 246 | |
| 247 | 247 | # Tells if a feature, identified by its name, is enabled |
| 248 | 248 | def enabled?(feature) |
| 249 | - self.settings["#{feature}_enabled"] == true | |
| 249 | + self.settings["#{feature}_enabled".to_sym] == true | |
| 250 | 250 | end |
| 251 | 251 | |
| 252 | 252 | # enables the features identified by <tt>features</tt>, which is expected to | ... | ... |
lib/acts_as_having_settings.rb
| ... | ... | @@ -14,6 +14,11 @@ module ActsAsHavingSettings |
| 14 | 14 | def #{settings_field} |
| 15 | 15 | self[:#{settings_field}] ||= Hash.new |
| 16 | 16 | end |
| 17 | + before_save :symbolize_settings_keys | |
| 18 | + private | |
| 19 | + def symbolize_settings_keys | |
| 20 | + self[:#{settings_field}] && self[:#{settings_field}].symbolize_keys! | |
| 21 | + end | |
| 17 | 22 | CODE |
| 18 | 23 | settings_items(*args) |
| 19 | 24 | end | ... | ... |
test/unit/acts_as_having_settings_test.rb
| ... | ... | @@ -74,4 +74,10 @@ class ActsAsHavingSettingsTest < Test::Unit::TestCase |
| 74 | 74 | assert_equal true, obj.flag |
| 75 | 75 | end |
| 76 | 76 | |
| 77 | + should 'symbolize keys when save' do | |
| 78 | + obj = TestClass.new | |
| 79 | + obj.settings.expects(:symbolize_keys!).once | |
| 80 | + assert obj.save | |
| 81 | + end | |
| 82 | + | |
| 77 | 83 | end | ... | ... |
test/unit/environment_test.rb
| ... | ... | @@ -1167,4 +1167,12 @@ class EnvironmentTest < Test::Unit::TestCase |
| 1167 | 1167 | p2.save! |
| 1168 | 1168 | end |
| 1169 | 1169 | |
| 1170 | + should 'always store setting keys as symbol' do | |
| 1171 | + env = Environment.default | |
| 1172 | + env.settings['string_key'] = 'new value' | |
| 1173 | + env.save!; env.reload | |
| 1174 | + assert_nil env.settings['string_key'] | |
| 1175 | + assert_equal env.settings[:string_key], 'new value' | |
| 1176 | + end | |
| 1177 | + | |
| 1170 | 1178 | end | ... | ... |