confiture 0.1.3 → 0.1.4
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/CHANGELOG.md +4 -0
- data/README.md +3 -3
- data/lib/confiture/configuration.rb +25 -13
- data/lib/confiture/version.rb +1 -1
- data/rakefile.rb +1 -1
- data/spec/configuration_spec.rb +45 -9
- metadata +2 -2
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -32,13 +32,13 @@ Rails style initializer (config/initializers/asin.rb):
|
|
32
32
|
|
33
33
|
YAML style configuration:
|
34
34
|
|
35
|
-
Your::Configuration.configure :
|
35
|
+
Your::Configuration.configure yaml: 'config/some.yml'
|
36
36
|
|
37
37
|
Inline style configuration:
|
38
38
|
|
39
|
-
Your::Configuration.configure :
|
39
|
+
Your::Configuration.configure secret: 'your-secret', key: 'your-key'
|
40
40
|
# or
|
41
|
-
client.configure :
|
41
|
+
client.configure secret: 'your-secret', key: 'your-key'
|
42
42
|
|
43
43
|
## License
|
44
44
|
|
@@ -39,13 +39,13 @@ module Confiture
|
|
39
39
|
#
|
40
40
|
# You may pass options as a hash as well:
|
41
41
|
#
|
42
|
-
# Confiture::Configuration.configure :
|
42
|
+
# Confiture::Configuration.configure secret: 'your-secret', key: 'your-key'
|
43
43
|
#
|
44
44
|
# Or configure everything using YAML:
|
45
45
|
#
|
46
|
-
# Confiture::Configuration.configure :
|
46
|
+
# Confiture::Configuration.configure yaml: 'config/asin.yml'
|
47
47
|
#
|
48
|
-
# Confiture::Configuration.configure :
|
48
|
+
# Confiture::Configuration.configure yaml: 'config/asin.yml' do |config, yml|
|
49
49
|
# config.key = yml[Rails.env]['key']
|
50
50
|
# end
|
51
51
|
#
|
@@ -53,7 +53,7 @@ module Confiture
|
|
53
53
|
#
|
54
54
|
# [yaml|yml] path to a yaml file with configuration
|
55
55
|
#
|
56
|
-
def configure(options={},reset=false)
|
56
|
+
def configure(options = {}, reset = false)
|
57
57
|
init_config(reset)
|
58
58
|
if yml_path = options[:yaml] || options[:yml]
|
59
59
|
yml = File.open(yml_path) { |file| YAML.load(file) }
|
@@ -77,10 +77,11 @@ module Confiture
|
|
77
77
|
# Run a block of code with temporary configuration.
|
78
78
|
#
|
79
79
|
def with_config(options={})
|
80
|
-
current_data = data
|
81
|
-
configure(options
|
80
|
+
self.current_data = data
|
81
|
+
configure(options)
|
82
|
+
yield
|
82
83
|
ensure
|
83
|
-
self.
|
84
|
+
self.current_data = nil
|
84
85
|
end
|
85
86
|
|
86
87
|
# Resets configuration to defaults
|
@@ -130,11 +131,20 @@ module Confiture
|
|
130
131
|
private
|
131
132
|
|
132
133
|
def data
|
133
|
-
|
134
|
+
current_data || @data
|
134
135
|
end
|
135
136
|
|
136
137
|
def data=(data)
|
137
|
-
|
138
|
+
@data = data
|
139
|
+
end
|
140
|
+
|
141
|
+
def current_data
|
142
|
+
Thread.current["__confiture_#{self}"]
|
143
|
+
end
|
144
|
+
|
145
|
+
def current_data=(data)
|
146
|
+
data = Data.new(data.options) unless data.nil?
|
147
|
+
Thread.current["__confiture_#{self}"] = data
|
138
148
|
end
|
139
149
|
|
140
150
|
def init_config(force=false)
|
@@ -144,13 +154,15 @@ module Confiture
|
|
144
154
|
end
|
145
155
|
|
146
156
|
def method_missing(meth, *args)
|
147
|
-
|
148
|
-
if meth
|
149
|
-
|
157
|
+
key = "#{meth}"
|
158
|
+
if respond_to?(meth)
|
159
|
+
super
|
160
|
+
elsif key =~ /.+=/ && args.size == 1
|
161
|
+
key = key[0..-2].to_sym
|
150
162
|
validate_key!(key)
|
151
163
|
data.options[key] = args.last
|
152
164
|
elsif args.size == 0
|
153
|
-
key =
|
165
|
+
key = key.to_sym
|
154
166
|
validate_key!(key)
|
155
167
|
data.options[key]
|
156
168
|
else
|
data/lib/confiture/version.rb
CHANGED
data/rakefile.rb
CHANGED
data/spec/configuration_spec.rb
CHANGED
@@ -17,13 +17,13 @@ module Confiture
|
|
17
17
|
|
18
18
|
class Default
|
19
19
|
include Confiture::Configuration
|
20
|
-
confiture_defaults(:
|
20
|
+
confiture_defaults(key: 'value')
|
21
21
|
end
|
22
22
|
|
23
23
|
describe Confiture do
|
24
24
|
context "reset" do
|
25
25
|
it "should reset the configuration" do
|
26
|
-
Config.configure(:
|
26
|
+
Config.configure(key: "value").tap do |config|
|
27
27
|
config.key.should eql("value")
|
28
28
|
config.reset!
|
29
29
|
config.key.should be_nil
|
@@ -49,7 +49,7 @@ module Confiture
|
|
49
49
|
|
50
50
|
it "should restore defaults" do
|
51
51
|
Default.configure.key.should eql('value')
|
52
|
-
Default.configure(:
|
52
|
+
Default.configure(key: 'bla').key.should eql('bla')
|
53
53
|
Default.reset!
|
54
54
|
Default.configure.key.should eql('value')
|
55
55
|
end
|
@@ -85,14 +85,14 @@ module Confiture
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should read configuration from yml" do
|
88
|
-
Config.configure(:
|
88
|
+
Config.configure(yaml: 'spec/config.yml').tap do |config|
|
89
89
|
config.secret.should eql('secret_yml')
|
90
90
|
config.key.should eql('key_yml')
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should read configuration from yml with block" do
|
95
|
-
conf = Config.configure :
|
95
|
+
conf = Config.configure yaml: 'spec/config.yml' do |config, yml|
|
96
96
|
config.secret = nil
|
97
97
|
config.key = yml['secret']
|
98
98
|
end
|
@@ -103,13 +103,49 @@ module Confiture
|
|
103
103
|
|
104
104
|
context "with_config" do
|
105
105
|
it "should have a config on a per block basis" do
|
106
|
-
Config.configure(:
|
107
|
-
|
108
|
-
|
109
|
-
|
106
|
+
Config.configure(key: "value")
|
107
|
+
Config.key.should eql("value")
|
108
|
+
Config.with_config(key: "bla") do
|
109
|
+
Config.key.should eql("bla")
|
110
110
|
end
|
111
111
|
Config.key.should eql("value")
|
112
112
|
end
|
113
113
|
end
|
114
|
+
|
115
|
+
context "scoping" do
|
116
|
+
it "should scope to the configuration class" do
|
117
|
+
mapping = {
|
118
|
+
Config => "bla",
|
119
|
+
Valid => "nups",
|
120
|
+
Allowed => "blupp",
|
121
|
+
Default => "nups",
|
122
|
+
}
|
123
|
+
mapping.each do |clazz, value|
|
124
|
+
clazz.reset!
|
125
|
+
clazz.configure(key: value)
|
126
|
+
end
|
127
|
+
mapping.each do |clazz, value|
|
128
|
+
clazz.key.should eql(value)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should allow threads to override configuration" do
|
133
|
+
Config.reset!
|
134
|
+
Config.configure(key: "nups")
|
135
|
+
t = Thread.new do
|
136
|
+
Config.key.should eql("nups")
|
137
|
+
Thread.stop
|
138
|
+
Config.key.should eql("nups")
|
139
|
+
end
|
140
|
+
sleep 0.1 while t.status != 'sleep'
|
141
|
+
Config.with_config(key: "dups") do
|
142
|
+
Config.key.should eql("dups")
|
143
|
+
t.run
|
144
|
+
t.join
|
145
|
+
Config.key.should eql("dups")
|
146
|
+
end
|
147
|
+
Config.key.should eql("nups")
|
148
|
+
end
|
149
|
+
end
|
114
150
|
end
|
115
151
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: confiture
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
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-11-
|
12
|
+
date: 2012-11-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|