setler 0.0.8 → 0.0.9
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/lib/generators/setler/setler_generator.rb +5 -5
- data/lib/generators/setler/templates/migration.rb +1 -1
- data/lib/setler/active_record.rb +2 -2
- data/lib/setler/scoped_settings.rb +3 -3
- data/lib/setler/settings.rb +8 -9
- data/lib/setler/version.rb +1 -1
- data/test/settings_test.rb +27 -21
- data/test/test_helper.rb +2 -2
- metadata +2 -2
@@ -2,13 +2,13 @@ require 'rails/generators/migration'
|
|
2
2
|
|
3
3
|
class SetlerGenerator < Rails::Generators::NamedBase
|
4
4
|
include Rails::Generators::Migration
|
5
|
-
|
5
|
+
|
6
6
|
argument :name, type: :string, default: "settings"
|
7
|
-
|
7
|
+
|
8
8
|
source_root File.expand_path('../templates', __FILE__)
|
9
|
-
|
9
|
+
|
10
10
|
@@migrations = false
|
11
|
-
|
11
|
+
|
12
12
|
def self.next_migration_number(dirname)
|
13
13
|
if ActiveRecord::Base.timestamped_migrations
|
14
14
|
if @@migrations
|
@@ -21,7 +21,7 @@ class SetlerGenerator < Rails::Generators::NamedBase
|
|
21
21
|
"%.3d" % (current_migration_number(dirname) + 1)
|
22
22
|
end
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def generate_model
|
26
26
|
template "model.rb", File.join("app/models",class_path,"#{file_name}.rb"), force: true
|
27
27
|
migration_template "migration.rb", "db/migrate/setler_create_#{table_name}.rb"
|
data/lib/setler/active_record.rb
CHANGED
data/lib/setler/settings.rb
CHANGED
@@ -3,9 +3,8 @@ module Setler
|
|
3
3
|
serialize :value
|
4
4
|
self.abstract_class = true
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
end
|
6
|
+
cattr_accessor :defaults
|
7
|
+
@@defaults = {}.with_indifferent_access
|
9
8
|
|
10
9
|
# Get and Set variables when the calling method is the variable name
|
11
10
|
def self.method_missing(method, *args, &block)
|
@@ -23,7 +22,7 @@ module Setler
|
|
23
22
|
|
24
23
|
def self.[](var)
|
25
24
|
the_setting = thing_scoped.find_by_var(var.to_s)
|
26
|
-
the_setting.present? ? the_setting.value : defaults[var]
|
25
|
+
the_setting.present? ? the_setting.value : @@defaults[var]
|
27
26
|
end
|
28
27
|
|
29
28
|
def self.[]=(var, value)
|
@@ -47,15 +46,15 @@ module Setler
|
|
47
46
|
raise SettingNotFound, "Setting variable \"#{var_name}\" not found"
|
48
47
|
end
|
49
48
|
end
|
50
|
-
|
49
|
+
|
51
50
|
def self.all
|
52
|
-
defaults.merge(Hash[thing_scoped.all.collect{ |s| [s.var, s.value] }])
|
51
|
+
@@defaults.merge(Hash[thing_scoped.all.collect{ |s| [s.var, s.value] }])
|
53
52
|
end
|
54
|
-
|
53
|
+
|
55
54
|
def self.thing_scoped
|
56
55
|
self.where(thing_type: nil, thing_id: nil)
|
57
56
|
end
|
58
|
-
|
57
|
+
|
59
58
|
end
|
60
|
-
|
59
|
+
|
61
60
|
end
|
data/lib/setler/version.rb
CHANGED
data/test/settings_test.rb
CHANGED
@@ -2,41 +2,41 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class ::SettingsTest < Test::Unit::TestCase
|
4
4
|
setup_db
|
5
|
-
|
5
|
+
|
6
6
|
def setup
|
7
7
|
::Settings.create(:var => 'test', :value => 'foo')
|
8
8
|
::Settings.create(:var => 'test2', :value => 'bar')
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def teardown
|
12
12
|
::Settings.delete_all
|
13
13
|
::Preferences.delete_all
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def test_defaults
|
17
17
|
::Settings.defaults[:foo] = 'default foo'
|
18
|
-
|
18
|
+
|
19
19
|
assert_equal 'default foo', ::Settings.foo
|
20
|
-
|
20
|
+
|
21
21
|
::Settings.foo = 'bar'
|
22
22
|
assert_equal 'bar', ::Settings.foo
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
def tests_defaults_false
|
26
26
|
::Settings.defaults[:foo] = false
|
27
27
|
assert_equal false, ::Settings.foo
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def test_get
|
31
31
|
assert_equal 'foo', ::Settings.test
|
32
32
|
assert_equal 'bar', ::Settings.test2
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def test_get_with_array_syntax
|
36
36
|
assert_equal 'foo', ::Settings["test"]
|
37
37
|
assert_equal 'bar', ::Settings[:test2]
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def test_update
|
41
41
|
::Settings.test = '321'
|
42
42
|
assert_equal '321', ::Settings.test
|
@@ -56,33 +56,33 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
56
56
|
def test_update_with_array_syntax
|
57
57
|
::Settings["test"] = '321'
|
58
58
|
assert_equal '321', ::Settings.test
|
59
|
-
|
59
|
+
|
60
60
|
::Settings[:test] = '567'
|
61
61
|
assert_equal '567', ::Settings.test
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
def test_create
|
65
65
|
::Settings.onetwothree = '123'
|
66
66
|
assert_equal '123', ::Settings.onetwothree
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
def test_complex_serialization
|
70
70
|
complex = [1, '2', {:three => true}]
|
71
71
|
::Settings.complex = complex
|
72
72
|
assert_equal complex, ::Settings.complex
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
def test_serialization_of_float
|
76
76
|
::Settings.float = 0.01
|
77
77
|
::Settings.reload
|
78
78
|
assert_equal 0.01, ::Settings.float
|
79
79
|
assert_equal 0.02, ::Settings.float * 2
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
def test_all
|
83
83
|
assert_equal({ "test2" => "bar", "test" => "foo" }, ::Settings.all)
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
def test_destroy
|
87
87
|
assert_not_nil ::Settings.test
|
88
88
|
::Settings.destroy :test
|
@@ -101,7 +101,7 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
101
101
|
::Settings.testing = '123'
|
102
102
|
assert_nil ::Preferences.testing
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
def test_user_has_setler
|
106
106
|
user = User.create name: 'user 1'
|
107
107
|
assert_nil user.preferences.likes_bacon
|
@@ -110,7 +110,7 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
110
110
|
user.preferences.destroy :likes_bacon
|
111
111
|
assert_nil user.preferences.likes_bacon
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
def test_user_settings_all
|
115
115
|
::Settings.destroy_all
|
116
116
|
user = User.create name: 'user 1'
|
@@ -122,7 +122,7 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
122
122
|
assert user.preferences.all['really_likes_bacon']
|
123
123
|
assert !::Settings.all['really_likes_bacon']
|
124
124
|
end
|
125
|
-
|
125
|
+
|
126
126
|
def test_user_settings_override_defaults
|
127
127
|
::Settings.defaults[:foo] = false
|
128
128
|
user = User.create name: 'user 1'
|
@@ -132,7 +132,13 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
132
132
|
user.preferences.foo = false
|
133
133
|
assert !user.preferences.foo
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
|
+
def test_user_preferences_has_defaults
|
137
|
+
::Preferences.defaults[:foo] = true
|
138
|
+
user = User.create name: 'user 1'
|
139
|
+
assert user.preferences.foo
|
140
|
+
end
|
141
|
+
|
136
142
|
# def test_user_has_settings_for
|
137
143
|
# user1 = User.create name: 'awesome user'
|
138
144
|
# user2 = User.create name: 'bad user'
|
@@ -148,8 +154,8 @@ class ::SettingsTest < Test::Unit::TestCase
|
|
148
154
|
end
|
149
155
|
|
150
156
|
def test_implementations_are_independent
|
151
|
-
::Preferences.create
|
152
|
-
::Preferences.create
|
157
|
+
::Preferences.create var: 'test', value: 'preferences foo'
|
158
|
+
::Preferences.create var: 'test2', value: 'preferences bar'
|
153
159
|
|
154
160
|
assert_not_equal ::Settings.defaults, ::Preferences.defaults
|
155
161
|
|
data/test/test_helper.rb
CHANGED
@@ -37,7 +37,7 @@ def setup_db
|
|
37
37
|
t.timestamps
|
38
38
|
end
|
39
39
|
add_index :settings, [ :thing_type, :thing_id, :var ], :unique => true
|
40
|
-
|
40
|
+
|
41
41
|
create_table :preferences do |t|
|
42
42
|
t.string :var, :null => false
|
43
43
|
t.text :value, :null => true
|
@@ -46,7 +46,7 @@ def setup_db
|
|
46
46
|
t.timestamps
|
47
47
|
end
|
48
48
|
add_index :preferences, [ :thing_type, :thing_id, :var ], :unique => true
|
49
|
-
|
49
|
+
|
50
50
|
create_table :users do |t|
|
51
51
|
t.string :name
|
52
52
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: setler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|