persistent_settings 1.0.3 → 1.1.0
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/README.md +13 -0
- data/lib/persistent_settings/version.rb +1 -1
- data/lib/settings.rb +6 -2
- data/spec/lib/settings_spec.rb +49 -3
- data/spec/spec_helper.rb +6 -0
- metadata +51 -15
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Persistent Settings
|
2
2
|
|
3
|
+
[](http://travis-ci.org/dabit/persistent_settings)
|
4
|
+
|
3
5
|
A simple key value store for ActiveRecord based applications.
|
4
6
|
|
5
7
|
Best used to store global app settings.
|
@@ -35,6 +37,17 @@ Reload your app:
|
|
35
37
|
|
36
38
|
It accepts all kinds of objects as the value
|
37
39
|
|
40
|
+
## Known Issues
|
41
|
+
|
42
|
+
Sometimes, settings are not loaded automatically at startup. If that's the case
|
43
|
+
add an initializer to your Rails app.
|
44
|
+
|
45
|
+
#
|
46
|
+
# config/initializers/settings.rb
|
47
|
+
#
|
48
|
+
|
49
|
+
Settings.load_from_persistance
|
50
|
+
|
38
51
|
# License
|
39
52
|
|
40
53
|
MIT License. Copyright 2011, Crowd Interactive http://www.crowdint.com
|
data/lib/settings.rb
CHANGED
@@ -40,15 +40,19 @@ class Settings < ActiveRecord::Base
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
def self.load_from_persistance
|
43
|
+
def self.load_from_persistance!
|
44
44
|
self.all.each do |setting|
|
45
45
|
self.send("#{setting.var}=", setting.value)
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
def self.load_from_persistance
|
50
|
+
load_from_persistance! if connected? && table_exists?
|
51
|
+
end
|
52
|
+
|
49
53
|
def self.keys
|
50
54
|
Settings.select(:var).collect { |s| s.var.to_sym }
|
51
55
|
end
|
52
56
|
|
53
|
-
load_from_persistance
|
57
|
+
load_from_persistance
|
54
58
|
end
|
data/spec/lib/settings_spec.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Settings do
|
4
|
-
before do
|
5
|
-
end
|
6
4
|
describe :assignation? do
|
7
5
|
context "the method name ends with =" do
|
8
6
|
it "returns true" do
|
@@ -68,7 +66,7 @@ describe Settings do
|
|
68
66
|
|
69
67
|
it "pulls the value from the database and creates its setter and getter" do
|
70
68
|
Settings.should_receive(:persisted_method=).with('some value')
|
71
|
-
Settings.load_from_persistance
|
69
|
+
Settings.load_from_persistance!
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
@@ -96,4 +94,52 @@ describe Settings do
|
|
96
94
|
specify { should include(:a_key) }
|
97
95
|
specify { should include(:another_key) }
|
98
96
|
end
|
97
|
+
|
98
|
+
describe :load_from_persistance! do
|
99
|
+
it "loads all settings from persistance and sets it up" do
|
100
|
+
settings = [ Settings.new(:var => 'foo', :value => 'bar') ]
|
101
|
+
Settings.should_receive(:all).and_return(settings)
|
102
|
+
Settings.should_receive("foo=").with('bar')
|
103
|
+
|
104
|
+
Settings.load_from_persistance!
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe :load_from_persistance do
|
109
|
+
context "AR is connected and table is created" do
|
110
|
+
before do
|
111
|
+
Settings.stub(:connected?).and_return true
|
112
|
+
Settings.stub(:table_exists?).and_return true
|
113
|
+
end
|
114
|
+
|
115
|
+
it "calls load_from_persistance!" do
|
116
|
+
Settings.should_receive(:load_from_persistance!)
|
117
|
+
Settings.load_from_persistance
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "AR is not connected" do
|
122
|
+
before do
|
123
|
+
Settings.stub(:connected?).and_return false
|
124
|
+
Settings.stub(:table_exists?).and_return true
|
125
|
+
end
|
126
|
+
|
127
|
+
it "calls load_from_persistance!" do
|
128
|
+
Settings.should_not_receive(:load_from_persistance!)
|
129
|
+
Settings.load_from_persistance
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context "table is not created" do
|
134
|
+
before do
|
135
|
+
Settings.stub(:connected?).and_return false
|
136
|
+
Settings.stub(:table_exists?).and_return false
|
137
|
+
end
|
138
|
+
|
139
|
+
it "calls load_from_persistance!" do
|
140
|
+
Settings.should_not_receive(:load_from_persistance!)
|
141
|
+
Settings.load_from_persistance
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
99
145
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,3 +2,9 @@ require 'persistent_settings'
|
|
2
2
|
|
3
3
|
::ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
4
4
|
|
5
|
+
::ActiveRecord::Schema.define(:version => 1) do
|
6
|
+
create_table "settings", :force => true do |t|
|
7
|
+
t.string "var"
|
8
|
+
t.string "value"
|
9
|
+
end
|
10
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: persistent_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-09-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: activerecord
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '3.0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: cucumber
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.1.4
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.4
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rake
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rspec
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: 2.7.0
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 2.7.0
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: sqlite3
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,7 +101,12 @@ dependencies:
|
|
76
101
|
version: '1.3'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '1.3'
|
80
110
|
description: Simple global Settings class for ActiveRecord based applications
|
81
111
|
email:
|
82
112
|
- david@crowdint.com
|
@@ -115,15 +145,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
145
|
- - ! '>='
|
116
146
|
- !ruby/object:Gem::Version
|
117
147
|
version: '0'
|
148
|
+
segments:
|
149
|
+
- 0
|
150
|
+
hash: 3753706074841151251
|
118
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
119
152
|
none: false
|
120
153
|
requirements:
|
121
154
|
- - ! '>='
|
122
155
|
- !ruby/object:Gem::Version
|
123
156
|
version: '0'
|
157
|
+
segments:
|
158
|
+
- 0
|
159
|
+
hash: 3753706074841151251
|
124
160
|
requirements: []
|
125
161
|
rubyforge_project: persistent_settings
|
126
|
-
rubygems_version: 1.8.
|
162
|
+
rubygems_version: 1.8.23
|
127
163
|
signing_key:
|
128
164
|
specification_version: 3
|
129
165
|
summary: Simple global Settings class for ActiveRecord based applications
|