configatron 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/doc/classes/Configatron/Store.html +87 -84
- data/doc/created.rid +1 -1
- data/doc/files/lib/configatron/store_rb.html +1 -1
- data/lib/configatron/store.rb +7 -3
- data/spec/lib/configatron_spec.rb +9 -0
- data/spec/lib/lost.yml +14 -0
- metadata +2 -1
@@ -181,27 +181,30 @@ Allows for the configuration of the system via a Hash
|
|
181
181
|
|
182
182
|
<div class="method-heading">
|
183
183
|
<a href="#M000007" class="method-signature">
|
184
|
-
<span class="method-name">configure_from_yaml</span><span class="method-args">(path)</span>
|
184
|
+
<span class="method-name">configure_from_yaml</span><span class="method-args">(path, opts = {})</span>
|
185
185
|
</a>
|
186
186
|
</div>
|
187
187
|
|
188
188
|
<div class="method-description">
|
189
189
|
<p>
|
190
190
|
Allows for the configuration of the system from a YAML file. Takes the path
|
191
|
-
to the YAML file.
|
191
|
+
to the YAML file. Also takes an optional parameter, <tt>:hash</tt>, that
|
192
|
+
indicates a specific hash that should be loaded from the file.
|
192
193
|
</p>
|
193
194
|
<p><a class="source-toggle" href="#"
|
194
195
|
onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
|
195
196
|
<div class="method-source-code" id="M000007-source">
|
196
197
|
<pre>
|
197
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
198
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 29</span>
|
199
|
+
29: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configure_from_yaml</span>(<span class="ruby-identifier">path</span>, <span class="ruby-identifier">opts</span> = {})
|
200
|
+
30: <span class="ruby-keyword kw">begin</span>
|
201
|
+
31: <span class="ruby-identifier">yml</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">path</span>))
|
202
|
+
32: <span class="ruby-identifier">yml</span> = <span class="ruby-identifier">yml</span>[<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:hash</span>]] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:hash</span>].<span class="ruby-identifier">nil?</span>
|
203
|
+
33: <span class="ruby-identifier">configure_from_hash</span>(<span class="ruby-identifier">yml</span>)
|
204
|
+
34: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Errno</span><span class="ruby-operator">::</span><span class="ruby-constant">ENOENT</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">e</span>
|
205
|
+
35: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
|
206
|
+
36: <span class="ruby-keyword kw">end</span>
|
207
|
+
37: <span class="ruby-keyword kw">end</span>
|
205
208
|
</pre>
|
206
209
|
</div>
|
207
210
|
</div>
|
@@ -262,38 +265,38 @@ href="http://simplypowerful.1984.cz/goodlibs/1.2006.05.23">simplypowerful.1984.c
|
|
262
265
|
onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
|
263
266
|
<div class="method-source-code" id="M000016-source">
|
264
267
|
<pre>
|
265
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
159: }
|
283
|
-
160: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Array</span> )
|
284
|
-
161: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
285
|
-
162: <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
|
268
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 147</span>
|
269
|
+
147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">obj</span>=<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">cloned</span>={} )
|
270
|
+
148: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cloned</span>.<span class="ruby-identifier">has_key?</span>( <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span> )
|
271
|
+
149: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>]
|
272
|
+
150: <span class="ruby-keyword kw">else</span>
|
273
|
+
151: <span class="ruby-keyword kw">begin</span>
|
274
|
+
152: <span class="ruby-identifier">cl</span> = <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">clone</span>
|
275
|
+
153: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span>
|
276
|
+
154: <span class="ruby-comment cmt"># unclonnable (TrueClass, Fixnum, ...)</span>
|
277
|
+
155: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">obj</span>
|
278
|
+
156: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">obj</span>
|
279
|
+
157: <span class="ruby-keyword kw">else</span>
|
280
|
+
158: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">obj</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
|
281
|
+
159: <span class="ruby-identifier">cloned</span>[<span class="ruby-identifier">cl</span>.<span class="ruby-identifier">object_id</span>] = <span class="ruby-identifier">cl</span>
|
282
|
+
160: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Hash</span> )
|
283
|
+
161: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">clone</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
284
|
+
162: <span class="ruby-identifier">cl</span>[<span class="ruby-identifier">k</span>] = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
|
286
285
|
163: }
|
287
|
-
164: <span class="ruby-keyword kw">
|
288
|
-
165:
|
289
|
-
166:
|
290
|
-
167:
|
291
|
-
168:
|
292
|
-
169: <span class="ruby-keyword kw">
|
293
|
-
170:
|
294
|
-
171:
|
295
|
-
172:
|
296
|
-
173:
|
286
|
+
164: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">is_a?</span>( <span class="ruby-constant">Array</span> )
|
287
|
+
165: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
288
|
+
166: <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
|
289
|
+
167: }
|
290
|
+
168: <span class="ruby-keyword kw">end</span>
|
291
|
+
169: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
|
292
|
+
170: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-identifier">var</span> )
|
293
|
+
171: <span class="ruby-identifier">v_cl</span> = <span class="ruby-identifier">deep_clone</span>( <span class="ruby-identifier">v</span>, <span class="ruby-identifier">cloned</span> )
|
294
|
+
172: <span class="ruby-identifier">cl</span>.<span class="ruby-identifier">instance_eval</span>( <span class="ruby-node">"#{var} = v_cl"</span> )
|
295
|
+
173: <span class="ruby-keyword kw">end</span>
|
296
|
+
174: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">cl</span>
|
297
|
+
175: <span class="ruby-keyword kw">end</span>
|
298
|
+
176: <span class="ruby-keyword kw">end</span>
|
299
|
+
177: <span class="ruby-keyword kw">end</span>
|
297
300
|
</pre>
|
298
301
|
</div>
|
299
302
|
</div>
|
@@ -316,10 +319,10 @@ Returns true if there are no configuration parameters
|
|
316
319
|
onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
|
317
320
|
<div class="method-source-code" id="M000008-source">
|
318
321
|
<pre>
|
319
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
320
|
-
|
321
|
-
|
322
|
-
|
322
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 40</span>
|
323
|
+
40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nil?</span>
|
324
|
+
41: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">empty?</span>
|
325
|
+
42: <span class="ruby-keyword kw">end</span>
|
323
326
|
</pre>
|
324
327
|
</div>
|
325
328
|
</div>
|
@@ -344,10 +347,10 @@ well.
|
|
344
347
|
onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
|
345
348
|
<div class="method-source-code" id="M000012-source">
|
346
349
|
<pre>
|
347
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
348
|
-
|
349
|
-
|
350
|
-
|
350
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 84</span>
|
351
|
+
84: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">protect</span>(<span class="ruby-identifier">name</span>)
|
352
|
+
85: <span class="ruby-ivar">@_protected</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>
|
353
|
+
86: <span class="ruby-keyword kw">end</span>
|
351
354
|
</pre>
|
352
355
|
</div>
|
353
356
|
</div>
|
@@ -370,15 +373,15 @@ Prevents all parameters from being reassigned.
|
|
370
373
|
onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
|
371
374
|
<div class="method-source-code" id="M000013-source">
|
372
375
|
<pre>
|
373
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
376
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 89</span>
|
377
|
+
89: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">protect_all!</span>
|
378
|
+
90: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">clear</span>
|
379
|
+
91: <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
|
380
|
+
92: <span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">k</span>)
|
381
|
+
93: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">protect_all!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Store</span>
|
382
|
+
94: <span class="ruby-ivar">@_protected</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">k</span>
|
383
|
+
95: <span class="ruby-keyword kw">end</span>
|
384
|
+
96: <span class="ruby-keyword kw">end</span>
|
382
385
|
</pre>
|
383
386
|
</div>
|
384
387
|
</div>
|
@@ -402,10 +405,10 @@ href="Store.html#M000010">remove</a> all below it.
|
|
402
405
|
onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
|
403
406
|
<div class="method-source-code" id="M000010-source">
|
404
407
|
<pre>
|
405
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
406
|
-
|
407
|
-
|
408
|
-
|
408
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 52</span>
|
409
|
+
52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">remove</span>(<span class="ruby-identifier">name</span>)
|
410
|
+
53: <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>)
|
411
|
+
54: <span class="ruby-keyword kw">end</span>
|
409
412
|
</pre>
|
410
413
|
</div>
|
411
414
|
</div>
|
@@ -429,10 +432,10 @@ will return the default_value specified.
|
|
429
432
|
onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
|
430
433
|
<div class="method-source-code" id="M000009-source">
|
431
434
|
<pre>
|
432
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
433
|
-
|
434
|
-
|
435
|
-
|
435
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 46</span>
|
436
|
+
46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">retrieve</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">default_value</span> = <span class="ruby-keyword kw">nil</span>)
|
437
|
+
47: <span class="ruby-ivar">@_store</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">default_value</span>
|
438
|
+
48: <span class="ruby-keyword kw">end</span>
|
436
439
|
</pre>
|
437
440
|
</div>
|
438
441
|
</div>
|
@@ -456,12 +459,12 @@ it won‘t set the value.
|
|
456
459
|
onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
|
457
460
|
<div class="method-source-code" id="M000011-source">
|
458
461
|
<pre>
|
459
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
462
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 58</span>
|
463
|
+
58: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_default</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">default_value</span>)
|
464
|
+
59: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@_store</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>]
|
465
|
+
60: <span class="ruby-ivar">@_store</span>[<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span>] = <span class="ruby-identifier">parse_options</span>(<span class="ruby-identifier">default_value</span>)
|
466
|
+
61: <span class="ruby-keyword kw">end</span>
|
467
|
+
62: <span class="ruby-keyword kw">end</span>
|
465
468
|
</pre>
|
466
469
|
</div>
|
467
470
|
</div>
|
@@ -510,10 +513,10 @@ Removes the protection of a parameter.
|
|
510
513
|
onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
|
511
514
|
<div class="method-source-code" id="M000014-source">
|
512
515
|
<pre>
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
516
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 99</span>
|
517
|
+
99: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unprotect</span>(<span class="ruby-identifier">name</span>)
|
518
|
+
100: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">reject!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">e</span><span class="ruby-operator">|</span> <span class="ruby-identifier">e</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_sym</span> }
|
519
|
+
101: <span class="ruby-keyword kw">end</span>
|
517
520
|
</pre>
|
518
521
|
</div>
|
519
522
|
</div>
|
@@ -533,14 +536,14 @@ Removes the protection of a parameter.
|
|
533
536
|
onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
|
534
537
|
<div class="method-source-code" id="M000015-source">
|
535
538
|
<pre>
|
536
|
-
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
539
|
+
<span class="ruby-comment cmt"># File lib/configatron/store.rb, line 103</span>
|
540
|
+
103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unprotect_all!</span>
|
541
|
+
104: <span class="ruby-ivar">@_protected</span>.<span class="ruby-identifier">clear</span>
|
542
|
+
105: <span class="ruby-ivar">@_store</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
|
543
|
+
106: <span class="ruby-identifier">val</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">k</span>)
|
544
|
+
107: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">unprotect_all!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Store</span>
|
545
|
+
108: <span class="ruby-keyword kw">end</span>
|
546
|
+
109: <span class="ruby-keyword kw">end</span>
|
544
547
|
</pre>
|
545
548
|
</div>
|
546
549
|
</div>
|
data/doc/created.rid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Thu, 18 Sep 2008
|
1
|
+
Thu, 18 Sep 2008 13:09:10 -0400
|
data/lib/configatron/store.rb
CHANGED
@@ -23,10 +23,14 @@ class Configatron
|
|
23
23
|
end
|
24
24
|
|
25
25
|
# Allows for the configuration of the system from a YAML file.
|
26
|
-
# Takes the path to the YAML file.
|
27
|
-
|
26
|
+
# Takes the path to the YAML file. Also takes an optional parameter,
|
27
|
+
# <tt>:hash</tt>, that indicates a specific hash that should be
|
28
|
+
# loaded from the file.
|
29
|
+
def configure_from_yaml(path, opts = {})
|
28
30
|
begin
|
29
|
-
|
31
|
+
yml = YAML.load(File.read(path))
|
32
|
+
yml = yml[opts[:hash]] unless opts[:hash].nil?
|
33
|
+
configure_from_hash(yml)
|
30
34
|
rescue Errno::ENOENT => e
|
31
35
|
puts e.message
|
32
36
|
end
|
@@ -154,6 +154,15 @@ describe "configatron" do
|
|
154
154
|
lambda{configatron.configure_from_yaml('i_dont_exist.yml')}.should_not raise_error
|
155
155
|
end
|
156
156
|
|
157
|
+
it "should be able to load a specific hash from the file" do
|
158
|
+
configatron.others.should be_nil
|
159
|
+
configatron.survivors.should be_nil
|
160
|
+
configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'lost.yml'), :hash => "survivors")
|
161
|
+
configatron.others.should be_nil
|
162
|
+
configatron.survivors.should be_nil
|
163
|
+
configatron.on_island.jack.should == 'Jack Shepherd'
|
164
|
+
end
|
165
|
+
|
157
166
|
end
|
158
167
|
|
159
168
|
it 'should return a parameter' do
|
data/spec/lib/lost.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
others:
|
2
|
+
on_island:
|
3
|
+
ben: Benjamin Linus
|
4
|
+
richard: Richard Alpert
|
5
|
+
deceased:
|
6
|
+
goodwin: Goodwin Stanhope
|
7
|
+
mikhail: Mikhail Bakunin
|
8
|
+
survivors:
|
9
|
+
on_island:
|
10
|
+
jack: Jack Shepherd
|
11
|
+
locke: John Locke
|
12
|
+
deceased:
|
13
|
+
charlie: Charlie Pace
|
14
|
+
michael: Michael Dawson
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: configatron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- markbates
|
@@ -75,5 +75,6 @@ test_files:
|
|
75
75
|
- spec/lib
|
76
76
|
- spec/lib/configatron_spec.rb
|
77
77
|
- spec/lib/futurama.yml
|
78
|
+
- spec/lib/lost.yml
|
78
79
|
- spec/spec.opts
|
79
80
|
- spec/spec_helper.rb
|