simplificator-has_setting 0.4.1 → 0.4.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/.gitignore +2 -0
- data/README +2 -0
- data/VERSION.yml +1 -1
- data/has_setting.gemspec +57 -0
- data/help/001_create_settings.rb +15 -0
- data/lib/has_setting/ar_extensions.rb +2 -1
- data/lib/has_setting.rb +2 -2
- data/test/foo.rb +3 -0
- data/test/unit/formatters_test.rb +8 -0
- data/test/unit/has_setting_test.rb +28 -12
- metadata +8 -4
data/.gitignore
ADDED
data/README
CHANGED
@@ -3,6 +3,8 @@ has_setting is a simple extension that enables ActiveRecord models to
|
|
3
3
|
store settings in a separate settings table as key/value pairs where the key and value are stored as Strings.
|
4
4
|
|
5
5
|
==History
|
6
|
+
* 0.4.2:
|
7
|
+
* bug fixes for boolean types default values
|
6
8
|
* 0.3.10:
|
7
9
|
* added boolean and booleans formatters
|
8
10
|
* 0.3.9:
|
data/VERSION.yml
CHANGED
data/has_setting.gemspec
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{has_setting}
|
5
|
+
s.version = "0.4.2"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Simplificator GmbH"]
|
9
|
+
s.date = %q{2009-08-21}
|
10
|
+
s.description = %q{Stores settings as key/value pairs in a settings table and provides accessors for them on the owning object}
|
11
|
+
s.email = %q{info@simplificator.com}
|
12
|
+
s.extra_rdoc_files = [
|
13
|
+
"README"
|
14
|
+
]
|
15
|
+
s.files = [
|
16
|
+
".gitignore",
|
17
|
+
"README",
|
18
|
+
"Rakefile",
|
19
|
+
"VERSION.yml",
|
20
|
+
"has_setting.gemspec",
|
21
|
+
"help/001_create_settings.rb",
|
22
|
+
"lib/has_setting.rb",
|
23
|
+
"lib/has_setting/ar_extensions.rb",
|
24
|
+
"lib/has_setting/formatters.rb",
|
25
|
+
"lib/has_setting/setting.rb",
|
26
|
+
"test/bar.rb",
|
27
|
+
"test/baz.rb",
|
28
|
+
"test/foo.rb",
|
29
|
+
"test/test_helper.rb",
|
30
|
+
"test/unit/formatters_test.rb",
|
31
|
+
"test/unit/has_setting_test.rb"
|
32
|
+
]
|
33
|
+
s.has_rdoc = true
|
34
|
+
s.homepage = %q{http://github.com/simplificator/has_setting}
|
35
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
36
|
+
s.require_paths = ["lib"]
|
37
|
+
s.rubygems_version = %q{1.3.2}
|
38
|
+
s.summary = %q{simple setting extension to AR}
|
39
|
+
s.test_files = [
|
40
|
+
"test/bar.rb",
|
41
|
+
"test/baz.rb",
|
42
|
+
"test/foo.rb",
|
43
|
+
"test/test_helper.rb",
|
44
|
+
"test/unit/formatters_test.rb",
|
45
|
+
"test/unit/has_setting_test.rb"
|
46
|
+
]
|
47
|
+
|
48
|
+
if s.respond_to? :specification_version then
|
49
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
50
|
+
s.specification_version = 3
|
51
|
+
|
52
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
53
|
+
else
|
54
|
+
end
|
55
|
+
else
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateSettings < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :settings do |t|
|
4
|
+
t.string(:owner_type, :null => false)
|
5
|
+
t.integer(:owner_id, :null => false)
|
6
|
+
t.string(:name, :null => false, :length => 64)
|
7
|
+
t.string(:value, :null => true, :length => 255)
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.down
|
13
|
+
drop_table(:settings)
|
14
|
+
end
|
15
|
+
end
|
@@ -47,7 +47,8 @@ module HasSetting
|
|
47
47
|
|
48
48
|
# default options
|
49
49
|
options[:type] ||= :string # treat as string
|
50
|
-
|
50
|
+
# default could be false, thats why we use has_key?
|
51
|
+
options[:default] = options.has_key?(:default) ? options[:default] : nil # no default
|
51
52
|
self.has_setting_options[name] = options
|
52
53
|
|
53
54
|
# setter
|
data/lib/has_setting.rb
CHANGED
@@ -11,8 +11,8 @@ end
|
|
11
11
|
HasSetting::Formatters.register_formatter(:string, HasSetting::Formatters::StringFormatter.new)
|
12
12
|
HasSetting::Formatters.register_formatter(:strings, HasSetting::Formatters::StringsFormatter.new)
|
13
13
|
HasSetting::Formatters.register_formatter(:float, HasSetting::Formatters::FloatFormatter.new)
|
14
|
-
HasSetting::Formatters.register_formatter(:floats, HasSetting::Formatters::
|
14
|
+
HasSetting::Formatters.register_formatter(:floats, HasSetting::Formatters::FloatsFormatter.new)
|
15
15
|
HasSetting::Formatters.register_formatter(:int, HasSetting::Formatters::IntFormatter.new)
|
16
16
|
HasSetting::Formatters.register_formatter(:ints, HasSetting::Formatters::IntsFormatter.new)
|
17
17
|
HasSetting::Formatters.register_formatter(:boolean, HasSetting::Formatters::BooleanFormatter.new)
|
18
|
-
HasSetting::Formatters.register_formatter(:booleans, HasSetting::Formatters::
|
18
|
+
HasSetting::Formatters.register_formatter(:booleans, HasSetting::Formatters::BooleansFormatter.new)
|
data/test/foo.rb
CHANGED
@@ -4,6 +4,7 @@ class FormattersTest < Test::Unit::TestCase
|
|
4
4
|
def test_for_type
|
5
5
|
[:string, :float, :floats, :int, :ints, :strings, :boolean, :booleans].each do |symbol|
|
6
6
|
assert(Formatters.for_type(symbol), "No formatter for #{symbol}")
|
7
|
+
assert_equal(Formatters.for_type(symbol).class.to_s, "HasSetting::Formatters::#{symbol.to_s.capitalize}Formatter")
|
7
8
|
end
|
8
9
|
assert_raises(ArgumentError) do
|
9
10
|
Formatters.for_type(:rarararararara_i_do_not_exist)
|
@@ -131,5 +132,12 @@ class FormattersTest < Test::Unit::TestCase
|
|
131
132
|
assert_equal([], f.to_type(''))
|
132
133
|
assert_equal([true], f.to_type('1'))
|
133
134
|
assert_equal([true, false], f.to_type('1,0'))
|
135
|
+
|
136
|
+
|
137
|
+
# test boolean with values != true|false
|
138
|
+
assert_equal('1', f.to_s('true'))
|
139
|
+
assert_equal('1', f.to_s(555))
|
140
|
+
|
141
|
+
|
134
142
|
end
|
135
143
|
end
|
@@ -8,18 +8,18 @@ class HasSettingTest < Test::Unit::TestCase
|
|
8
8
|
end
|
9
9
|
|
10
10
|
|
11
|
-
def
|
11
|
+
def _test_setting_has_accessors
|
12
12
|
assert @foo.respond_to?(:setting_1)
|
13
13
|
assert @foo.respond_to?(:setting_1=)
|
14
14
|
end
|
15
15
|
|
16
16
|
|
17
|
-
def
|
17
|
+
def _test_has_many
|
18
18
|
assert @foo.respond_to?(:settings)
|
19
19
|
assert @foo.settings.is_a?(Array)
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def _test_settings_are_destroyed
|
23
23
|
count_before = HasSetting::Setting.count
|
24
24
|
@foo.setting_1 = 10
|
25
25
|
@foo.save!
|
@@ -29,7 +29,7 @@ class HasSettingTest < Test::Unit::TestCase
|
|
29
29
|
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
32
|
+
def _test_write_setting
|
33
33
|
count_before = HasSetting::Setting.count
|
34
34
|
@foo.write_setting('name', 'value1')
|
35
35
|
@foo.save!
|
@@ -45,7 +45,7 @@ class HasSettingTest < Test::Unit::TestCase
|
|
45
45
|
assert_equal('value2', setting.value)
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
48
|
+
def _test_setting_accessors
|
49
49
|
count_before = HasSetting::Setting.count
|
50
50
|
assert(!@foo.setting_1)
|
51
51
|
@foo.setting_1 = 'bli'
|
@@ -56,7 +56,7 @@ class HasSettingTest < Test::Unit::TestCase
|
|
56
56
|
assert_equal('bla', @foo.setting_1)
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
59
|
+
def _test_different_classes_do_not_share_setting
|
60
60
|
count_before = HasSetting::Setting.count
|
61
61
|
@foo.setting_1 = 'foo'
|
62
62
|
@foo.save!
|
@@ -69,13 +69,13 @@ class HasSettingTest < Test::Unit::TestCase
|
|
69
69
|
end
|
70
70
|
|
71
71
|
|
72
|
-
def
|
72
|
+
def _test_has_nil_setting
|
73
73
|
@foo.setting_1 = nil
|
74
74
|
assert(@foo.read_setting('setting_1'))
|
75
75
|
assert(!@foo.setting_1)
|
76
76
|
end
|
77
77
|
|
78
|
-
def
|
78
|
+
def _test_options_on_getter
|
79
79
|
@foo.setting_1 = '12.3'
|
80
80
|
assert_equal('12.3', @foo.setting_1)
|
81
81
|
assert_equal(12, @foo.setting_1(:type => :int))
|
@@ -86,21 +86,21 @@ class HasSettingTest < Test::Unit::TestCase
|
|
86
86
|
assert_equal('12.3', @foo.setting_2(:type => :string))
|
87
87
|
end
|
88
88
|
|
89
|
-
def
|
89
|
+
def _test_different_classes_do_not_share_options()
|
90
90
|
@foo.setting_2 = 12.3
|
91
91
|
assert_equal(12.3, @foo.setting_2)
|
92
92
|
@bar.setting_2 = 12.3
|
93
93
|
assert_equal(12, @bar.setting_2)
|
94
94
|
end
|
95
95
|
|
96
|
-
def
|
96
|
+
def _test_default_values()
|
97
97
|
assert_equal('def', @foo.with_default)
|
98
98
|
assert_equal('override def', @foo.with_default(:default => 'override def'))
|
99
99
|
@foo.with_default = 'not def'
|
100
100
|
assert_equal('not def', @foo.with_default)
|
101
101
|
end
|
102
102
|
|
103
|
-
def
|
103
|
+
def _test_write_settings_without_saved_parent
|
104
104
|
my_foo = Foo.new
|
105
105
|
count_before = HasSetting::Setting.count
|
106
106
|
my_foo.with_default = 'radabumm'
|
@@ -111,9 +111,25 @@ class HasSettingTest < Test::Unit::TestCase
|
|
111
111
|
assert_equal('radabumm', my_foo.with_default)
|
112
112
|
end
|
113
113
|
|
114
|
-
def
|
114
|
+
def _test_not_everyone_has_settings_association
|
115
115
|
assert_equal(true, @foo.respond_to?(:settings))
|
116
116
|
assert_equal(true, @bar.respond_to?(:settings))
|
117
117
|
assert_equal(false, @baz.respond_to?(:settings))
|
118
118
|
end
|
119
|
+
|
120
|
+
|
121
|
+
def _test_boolean_setting_without_default
|
122
|
+
assert_equal nil, @foo.setting_3
|
123
|
+
@foo.setting_3 = true
|
124
|
+
@foo.save!
|
125
|
+
assert_equal true, @foo.reload.setting_3
|
126
|
+
end
|
127
|
+
def test_boolean_setting_with_default
|
128
|
+
assert_equal false, @foo.setting_4
|
129
|
+
@foo.setting_4 = true
|
130
|
+
@foo.save!
|
131
|
+
assert_equal true, @foo.reload.setting_4
|
132
|
+
end
|
133
|
+
|
134
|
+
|
119
135
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplificator-has_setting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simplificator GmbH
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-08-21 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,8 +22,12 @@ extensions: []
|
|
22
22
|
extra_rdoc_files:
|
23
23
|
- README
|
24
24
|
files:
|
25
|
+
- .gitignore
|
26
|
+
- README
|
25
27
|
- Rakefile
|
26
28
|
- VERSION.yml
|
29
|
+
- has_setting.gemspec
|
30
|
+
- help/001_create_settings.rb
|
27
31
|
- lib/has_setting.rb
|
28
32
|
- lib/has_setting/ar_extensions.rb
|
29
33
|
- lib/has_setting/formatters.rb
|
@@ -34,9 +38,9 @@ files:
|
|
34
38
|
- test/test_helper.rb
|
35
39
|
- test/unit/formatters_test.rb
|
36
40
|
- test/unit/has_setting_test.rb
|
37
|
-
- README
|
38
41
|
has_rdoc: true
|
39
42
|
homepage: http://github.com/simplificator/has_setting
|
43
|
+
licenses:
|
40
44
|
post_install_message:
|
41
45
|
rdoc_options:
|
42
46
|
- --charset=UTF-8
|
@@ -57,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
61
|
requirements: []
|
58
62
|
|
59
63
|
rubyforge_project:
|
60
|
-
rubygems_version: 1.
|
64
|
+
rubygems_version: 1.3.5
|
61
65
|
signing_key:
|
62
66
|
specification_version: 3
|
63
67
|
summary: simple setting extension to AR
|