settler 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +1 -1
- data/README.rdoc +1 -1
- data/VERSION +1 -1
- data/lib/default_scope_patch.rb +2 -0
- data/lib/setting.rb +9 -4
- data/lib/settler.rb +3 -2
- data/settler.gemspec +29 -38
- data/test/test_settler.rb +32 -2
- metadata +8 -23
- data/.gitignore +0 -21
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.2
|
data/lib/default_scope_patch.rb
CHANGED
data/lib/setting.rb
CHANGED
@@ -7,7 +7,7 @@ class Setting < ActiveRecord::Base
|
|
7
7
|
self.rails3 = defined?(ActiveRecord::VERSION) && ActiveRecord::VERSION::MAJOR >= 3
|
8
8
|
|
9
9
|
attr_readonly :key
|
10
|
-
|
10
|
+
attr_accessible :key, :alt, :value
|
11
11
|
|
12
12
|
validates_presence_of :key
|
13
13
|
validate :setting_validations
|
@@ -70,6 +70,10 @@ class Setting < ActiveRecord::Base
|
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
|
+
# Overrides the delete methods to ensure the default scope is not passed in the query
|
74
|
+
def delete; Setting.without_default_scope{ super } end
|
75
|
+
def self.delete_all; Setting.without_default_scope{ super } end
|
76
|
+
|
73
77
|
# Resets this setting to the default stored in the settler configuration
|
74
78
|
def reset!
|
75
79
|
defaults = Settler.config[self.key]
|
@@ -77,6 +81,7 @@ class Setting < ActiveRecord::Base
|
|
77
81
|
self.value = defaults['value']
|
78
82
|
self.editable = defaults['editable']
|
79
83
|
self.deletable = defaults['deletable']
|
84
|
+
self.deleted = false
|
80
85
|
rails3 ? save(:validate => false) : save(false)
|
81
86
|
end
|
82
87
|
|
@@ -95,9 +100,9 @@ private
|
|
95
100
|
# Performs instance validations as defined in the settler configuration.
|
96
101
|
def setting_validations
|
97
102
|
if errors.empty?
|
98
|
-
errors.add(:value,
|
99
|
-
errors.add(:value,
|
100
|
-
errors.add(:value,
|
103
|
+
errors.add(:value, :blank) if validators['presence'] && ['1','true',true].include?(validators['presence']) && self.value.nil?
|
104
|
+
errors.add(:value, :inclusion) if valid_values && !valid_values.include?(self.value)
|
105
|
+
errors.add(:value, :invalid) if validators['format'] && !(Regexp.new(validators['format']) =~ self.value)
|
101
106
|
end
|
102
107
|
end
|
103
108
|
|
data/lib/settler.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'erb'
|
3
3
|
require 'hash_extension'
|
4
|
-
require 'setting'
|
5
4
|
require 'type_casters'
|
5
|
+
require 'setting'
|
6
6
|
|
7
7
|
# Settler loads and manages application wide settings and provides an interface for retrieving settings. The Settler
|
8
8
|
# object cannot be instantiated; all functionality is available on class level.
|
@@ -20,10 +20,11 @@ class Settler
|
|
20
20
|
self.config = config[namespace] if namespace
|
21
21
|
self.config.each do |key, attributes|
|
22
22
|
Setting.without_default_scope do
|
23
|
-
Setting.find_or_create_by_key(attributes.only(:alt, :value).merge(:key => key)) do |s|
|
23
|
+
setting = Setting.find_or_create_by_key(attributes.only(:alt, :value).merge(:key => key)) do |s|
|
24
24
|
s.editable = attributes['editable']
|
25
25
|
s.deletable = attributes['deletable']
|
26
26
|
end
|
27
|
+
p "[Settler] Validation failed for setting '#{setting.key}': #{setting.errors.full_messages.to_sentence}" if !setting.valid?
|
27
28
|
end
|
28
29
|
end
|
29
30
|
Setting.all.each{ |s| key = s.key; Settler.class.send(:define_method, key){ Setting.find_by_key(key) } }
|
data/settler.gemspec
CHANGED
@@ -1,63 +1,54 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{settler}
|
8
|
-
s.version = "1.2.
|
8
|
+
s.version = "1.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Reinier de Lange"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-07-27}
|
13
13
|
s.description = %q{This gem is a combination of the Squeegy's rails-settings and Binarylogic's settingslogic gem, meaning it reads its configuration from a YAML file, but stores all settings in the database as well for on the fly changes.}
|
14
14
|
s.email = %q{r.j.delange@nedforce.nl}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
|
17
|
+
"README.rdoc"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
"test/test_settler.rb"
|
21
|
+
"LICENSE",
|
22
|
+
"README.rdoc",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"generators/settler/settler_generator.rb",
|
26
|
+
"generators/settler/templates/migration.rb",
|
27
|
+
"generators/settler/templates/settler.yml",
|
28
|
+
"init.rb",
|
29
|
+
"lib/default_scope_patch.rb",
|
30
|
+
"lib/generators/settler/USAGE",
|
31
|
+
"lib/generators/settler/settler_generator.rb",
|
32
|
+
"lib/generators/settler/templates/migration.rb",
|
33
|
+
"lib/generators/settler/templates/settler.yml",
|
34
|
+
"lib/hash_extension.rb",
|
35
|
+
"lib/setting.rb",
|
36
|
+
"lib/settler.rb",
|
37
|
+
"lib/type_casters.rb",
|
38
|
+
"settler.gemspec",
|
39
|
+
"test/custom_typecaster.rb",
|
40
|
+
"test/database.yml",
|
41
|
+
"test/helper.rb",
|
42
|
+
"test/schema.rb",
|
43
|
+
"test/settler.yml",
|
44
|
+
"test/test_settler.rb"
|
46
45
|
]
|
47
46
|
s.homepage = %q{http://github.com/moiristo/settler}
|
48
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
49
47
|
s.require_paths = ["lib"]
|
50
|
-
s.rubygems_version = %q{1.
|
48
|
+
s.rubygems_version = %q{1.6.2}
|
51
49
|
s.summary = %q{Settler manages global application settings in Rails}
|
52
|
-
s.test_files = [
|
53
|
-
"test/custom_typecaster.rb",
|
54
|
-
"test/helper.rb",
|
55
|
-
"test/schema.rb",
|
56
|
-
"test/test_settler.rb"
|
57
|
-
]
|
58
50
|
|
59
51
|
if s.respond_to? :specification_version then
|
60
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
61
52
|
s.specification_version = 3
|
62
53
|
|
63
54
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
data/test/test_settler.rb
CHANGED
@@ -23,8 +23,12 @@ class TestSettler < Test::Unit::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_should_not_create_instance
|
26
|
-
|
27
|
-
Settler.new
|
26
|
+
if RUBY_VERSION.starts_with?("1.9")
|
27
|
+
assert_nil Settler.new
|
28
|
+
else
|
29
|
+
assert_raise NoMethodError do
|
30
|
+
Settler.new
|
31
|
+
end
|
28
32
|
end
|
29
33
|
end
|
30
34
|
|
@@ -51,6 +55,24 @@ class TestSettler < Test::Unit::TestCase
|
|
51
55
|
assert_nil Settler.search_algorithm
|
52
56
|
end
|
53
57
|
|
58
|
+
def test_should_delete_destroyed_setting
|
59
|
+
deletable_setting = Settler.search_algorithm
|
60
|
+
assert deletable_setting.destroy
|
61
|
+
deletable_setting.delete
|
62
|
+
assert Setting.deleted.empty?
|
63
|
+
Settler.load!
|
64
|
+
assert Settler.search_algorithm.present?
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_should_delete_all_destroyed_setting
|
68
|
+
deletable_setting = Settler.search_algorithm
|
69
|
+
assert deletable_setting.destroy
|
70
|
+
Setting.delete_all
|
71
|
+
assert Setting.deleted.empty?
|
72
|
+
Settler.load!
|
73
|
+
assert Settler.search_algorithm.present?
|
74
|
+
end
|
75
|
+
|
54
76
|
def test_should_not_update_uneditable_setting
|
55
77
|
uneditable_setting = Settler.search_algorithm
|
56
78
|
assert !uneditable_setting.update_attributes(:value => 'sphinx')
|
@@ -143,4 +165,12 @@ class TestSettler < Test::Unit::TestCase
|
|
143
165
|
assert uneditable_setting.deletable?
|
144
166
|
end
|
145
167
|
|
168
|
+
def test_should_undelete_when_resetting
|
169
|
+
deleted_setting = Settler.search_algorithm
|
170
|
+
assert deleted_setting.destroy
|
171
|
+
assert Setting.deleted.include?(deleted_setting)
|
172
|
+
deleted_setting.reset!
|
173
|
+
assert !Setting.deleted.include?(deleted_setting)
|
174
|
+
end
|
175
|
+
|
146
176
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: settler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
- 1
|
10
|
-
version: 1.2.1
|
4
|
+
prerelease:
|
5
|
+
version: 1.2.2
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Reinier de Lange
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-07-27 00:00:00 +02:00
|
19
14
|
default_executable:
|
20
15
|
dependencies: []
|
21
16
|
|
@@ -30,7 +25,6 @@ extra_rdoc_files:
|
|
30
25
|
- README.rdoc
|
31
26
|
files:
|
32
27
|
- .document
|
33
|
-
- .gitignore
|
34
28
|
- LICENSE
|
35
29
|
- README.rdoc
|
36
30
|
- Rakefile
|
@@ -60,8 +54,8 @@ homepage: http://github.com/moiristo/settler
|
|
60
54
|
licenses: []
|
61
55
|
|
62
56
|
post_install_message:
|
63
|
-
rdoc_options:
|
64
|
-
|
57
|
+
rdoc_options: []
|
58
|
+
|
65
59
|
require_paths:
|
66
60
|
- lib
|
67
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -69,28 +63,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
63
|
requirements:
|
70
64
|
- - ">="
|
71
65
|
- !ruby/object:Gem::Version
|
72
|
-
hash: 3
|
73
|
-
segments:
|
74
|
-
- 0
|
75
66
|
version: "0"
|
76
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
68
|
none: false
|
78
69
|
requirements:
|
79
70
|
- - ">="
|
80
71
|
- !ruby/object:Gem::Version
|
81
|
-
hash: 3
|
82
|
-
segments:
|
83
|
-
- 0
|
84
72
|
version: "0"
|
85
73
|
requirements: []
|
86
74
|
|
87
75
|
rubyforge_project:
|
88
|
-
rubygems_version: 1.
|
76
|
+
rubygems_version: 1.6.2
|
89
77
|
signing_key:
|
90
78
|
specification_version: 3
|
91
79
|
summary: Settler manages global application settings in Rails
|
92
|
-
test_files:
|
93
|
-
|
94
|
-
- test/helper.rb
|
95
|
-
- test/schema.rb
|
96
|
-
- test/test_settler.rb
|
80
|
+
test_files: []
|
81
|
+
|