Skip to content

Commit

Permalink
Warn if setting creation fails, override delete_all
Browse files Browse the repository at this point in the history
  • Loading branch information
Reinier de Lange committed Feb 24, 2011
1 parent 0b141b9 commit 5ae173c
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 7 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,4 @@ rdoc
pkg

## PROJECT::SPECIFIC
test/debug.log
7 changes: 3 additions & 4 deletions lib/setting.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,9 @@ def destroy
end
end

# Overrides the delete method to ensure the default scope is not passed in the query
def delete
Setting.without_default_scope{ super }
end
# Overrides the delete methods to ensure the default scope is not passed in the query
def delete; Setting.without_default_scope{ super } end
def self.delete_all; Setting.without_default_scope{ super } end

# Resets this setting to the default stored in the settler configuration
def reset!
Expand Down
3 changes: 2 additions & 1 deletion lib/settler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ def load!
self.config = config[namespace] if namespace
self.config.each do |key, attributes|
Setting.without_default_scope do
Setting.find_or_create_by_key(attributes.only(:alt, :value).merge(:key => key)) do |s|
setting = Setting.find_or_create_by_key(attributes.only(:alt, :value).merge(:key => key)) do |s|
s.editable = attributes['editable']
s.deletable = attributes['deletable']
end
p "[Settler] Validation failed for setting '#{setting.key}': #{setting.errors.full_messages.to_sentence}" if !setting.valid?
end
end
Setting.all.each{ |s| key = s.key; Settler.class.send(:define_method, key){ Setting.find_by_key(key) } }
Expand Down
2 changes: 1 addition & 1 deletion settler.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

Gem::Specification.new do |s|
s.name = %q{settler}
s.version = "1.2.1"
s.version = "1.2.2"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Reinier de Lange"]
Expand Down
11 changes: 10 additions & 1 deletion test/test_settler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,23 @@ def test_should_destroy_setting
assert_nil Settler.search_algorithm
end

def test_should_delete_destroy_setting
def test_should_delete_destroyed_setting
deletable_setting = Settler.search_algorithm
assert deletable_setting.destroy
deletable_setting.delete
assert Setting.deleted.empty?
Settler.load!
assert Settler.search_algorithm.present?
end

def test_should_delete_all_destroyed_setting
deletable_setting = Settler.search_algorithm
assert deletable_setting.destroy
Setting.delete_all
assert Setting.deleted.empty?
Settler.load!
assert Settler.search_algorithm.present?
end

def test_should_not_update_uneditable_setting
uneditable_setting = Settler.search_algorithm
Expand Down

0 comments on commit 5ae173c

Please sign in to comment.