configatron 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -92,12 +92,13 @@ The central class for managing the configurations.
92
92
  <h3 class="section-bar">Methods</h3>
93
93
 
94
94
  <div class="name-list">
95
- <a href="#M000007">configure</a>&nbsp;&nbsp;
96
- <a href="#M000008">configure_from_hash</a>&nbsp;&nbsp;
97
- <a href="#M000009">reload</a>&nbsp;&nbsp;
98
- <a href="#M000011">reset</a>&nbsp;&nbsp;
99
- <a href="#M000010">reset!</a>&nbsp;&nbsp;
100
- <a href="#M000012">revert</a>&nbsp;&nbsp;
95
+ <a href="#M000010">configure</a>&nbsp;&nbsp;
96
+ <a href="#M000011">configure_from_hash</a>&nbsp;&nbsp;
97
+ <a href="#M000012">configure_from_yaml</a>&nbsp;&nbsp;
98
+ <a href="#M000013">reload</a>&nbsp;&nbsp;
99
+ <a href="#M000015">reset</a>&nbsp;&nbsp;
100
+ <a href="#M000014">reset!</a>&nbsp;&nbsp;
101
+ <a href="#M000016">revert</a>&nbsp;&nbsp;
101
102
  </div>
102
103
  </div>
103
104
 
@@ -145,11 +146,11 @@ NoMethodError exception will be raised.
145
146
  <div id="methods">
146
147
  <h3 class="section-bar">Public Instance methods</h3>
147
148
 
148
- <div id="method-M000007" class="method-detail">
149
- <a name="M000007"></a>
149
+ <div id="method-M000010" class="method-detail">
150
+ <a name="M000010"></a>
150
151
 
151
152
  <div class="method-heading">
152
- <a href="#M000007" class="method-signature">
153
+ <a href="#M000010" class="method-signature">
153
154
  <span class="method-name">configure</span><span class="method-args">() {|storage| ...}</span>
154
155
  </a>
155
156
  </div>
@@ -159,8 +160,8 @@ NoMethodError exception will be raised.
159
160
  Yields a new <a href="Store.html">Configatron::Store</a> class.
160
161
  </p>
161
162
  <p><a class="source-toggle" href="#"
162
- onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
163
- <div class="method-source-code" id="M000007-source">
163
+ onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
164
+ <div class="method-source-code" id="M000010-source">
164
165
  <pre>
165
166
  <span class="ruby-comment cmt"># File lib/configuration.rb, line 18</span>
166
167
  18: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configure</span>
@@ -176,11 +177,11 @@ Yields a new <a href="Store.html">Configatron::Store</a> class.
176
177
  </div>
177
178
  </div>
178
179
 
179
- <div id="method-M000008" class="method-detail">
180
- <a name="M000008"></a>
180
+ <div id="method-M000011" class="method-detail">
181
+ <a name="M000011"></a>
181
182
 
182
183
  <div class="method-heading">
183
- <a href="#M000008" class="method-signature">
184
+ <a href="#M000011" class="method-signature">
184
185
  <span class="method-name">configure_from_hash</span><span class="method-args">(parameters)</span>
185
186
  </a>
186
187
  </div>
@@ -190,8 +191,8 @@ Yields a new <a href="Store.html">Configatron::Store</a> class.
190
191
  Used to load configuration settings from a Hash.
191
192
  </p>
192
193
  <p><a class="source-toggle" href="#"
193
- onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
194
- <div class="method-source-code" id="M000008-source">
194
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
195
+ <div class="method-source-code" id="M000011-source">
195
196
  <pre>
196
197
  <span class="ruby-comment cmt"># File lib/configuration.rb, line 28</span>
197
198
  28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configure_from_hash</span>(<span class="ruby-identifier">parameters</span>)
@@ -204,11 +205,44 @@ Used to load configuration settings from a Hash.
204
205
  </div>
205
206
  </div>
206
207
 
207
- <div id="method-M000009" class="method-detail">
208
- <a name="M000009"></a>
208
+ <div id="method-M000012" class="method-detail">
209
+ <a name="M000012"></a>
209
210
 
210
211
  <div class="method-heading">
211
- <a href="#M000009" class="method-signature">
212
+ <a href="#M000012" class="method-signature">
213
+ <span class="method-name">configure_from_yaml</span><span class="method-args">(path)</span>
214
+ </a>
215
+ </div>
216
+
217
+ <div class="method-description">
218
+ <p>
219
+ Used to load configuration settings from a YAML file.
220
+ </p>
221
+ <p><a class="source-toggle" href="#"
222
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
223
+ <div class="method-source-code" id="M000012-source">
224
+ <pre>
225
+ <span class="ruby-comment cmt"># File lib/configuration.rb, line 35</span>
226
+ 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configure_from_yaml</span>(<span class="ruby-identifier">path</span>)
227
+ 36: <span class="ruby-keyword kw">begin</span>
228
+ 37: <span class="ruby-identifier">storage</span> = <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">YamlStore</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">path</span>)
229
+ 38: <span class="ruby-ivar">@_storage_list</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">storage</span>
230
+ 39: <span class="ruby-identifier">load_methods</span>(<span class="ruby-identifier">storage</span>)
231
+ 40: <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">&gt;</span> <span class="ruby-identifier">e</span>
232
+ 41: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>.<span class="ruby-identifier">message</span>
233
+ 42: <span class="ruby-comment cmt"># file doesn't exist.</span>
234
+ 43: <span class="ruby-keyword kw">end</span>
235
+ 44: <span class="ruby-keyword kw">end</span>
236
+ </pre>
237
+ </div>
238
+ </div>
239
+ </div>
240
+
241
+ <div id="method-M000013" class="method-detail">
242
+ <a name="M000013"></a>
243
+
244
+ <div class="method-heading">
245
+ <a href="#M000013" class="method-signature">
212
246
  <span class="method-name">reload</span><span class="method-args">()</span>
213
247
  </a>
214
248
  </div>
@@ -218,25 +252,26 @@ Used to load configuration settings from a Hash.
218
252
  Replays the history of configurations.
219
253
  </p>
220
254
  <p><a class="source-toggle" href="#"
221
- onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
222
- <div class="method-source-code" id="M000009-source">
255
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
256
+ <div class="method-source-code" id="M000013-source">
223
257
  <pre>
224
- <span class="ruby-comment cmt"># File lib/configuration.rb, line 35</span>
225
- 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>
226
- 36: <span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">storage</span><span class="ruby-operator">|</span>
227
- 37: <span class="ruby-identifier">load_methods</span>(<span class="ruby-identifier">storage</span>)
228
- 38: <span class="ruby-keyword kw">end</span>
229
- 39: <span class="ruby-keyword kw">end</span>
258
+ <span class="ruby-comment cmt"># File lib/configuration.rb, line 47</span>
259
+ 47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>
260
+ 48: <span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">storage</span><span class="ruby-operator">|</span>
261
+ 49: <span class="ruby-identifier">storage</span>.<span class="ruby-identifier">reload</span>
262
+ 50: <span class="ruby-identifier">load_methods</span>(<span class="ruby-identifier">storage</span>)
263
+ 51: <span class="ruby-keyword kw">end</span>
264
+ 52: <span class="ruby-keyword kw">end</span>
230
265
  </pre>
231
266
  </div>
232
267
  </div>
233
268
  </div>
234
269
 
235
- <div id="method-M000011" class="method-detail">
236
- <a name="M000011"></a>
270
+ <div id="method-M000015" class="method-detail">
271
+ <a name="M000015"></a>
237
272
 
238
273
  <div class="method-heading">
239
- <a href="#M000011" class="method-signature">
274
+ <a href="#M000015" class="method-signature">
240
275
  <span class="method-name">reset</span><span class="method-args">()</span>
241
276
  </a>
242
277
  </div>
@@ -246,64 +281,64 @@ Replays the history of configurations.
246
281
  All methods are undefined.
247
282
  </p>
248
283
  <p><a class="source-toggle" href="#"
249
- onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
250
- <div class="method-source-code" id="M000011-source">
284
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
285
+ <div class="method-source-code" id="M000015-source">
251
286
  <pre>
252
- <span class="ruby-comment cmt"># File lib/configuration.rb, line 51</span>
253
- 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
254
- 52: <span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">storage</span><span class="ruby-operator">|</span>
255
- 53: <span class="ruby-identifier">storage</span>.<span class="ruby-identifier">parameters</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-identifier">v</span><span class="ruby-operator">|</span>
256
- 54: <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-keyword kw">do</span>
257
- 55: <span class="ruby-keyword kw">begin</span>
258
- 56: <span class="ruby-identifier">undef_method</span>(<span class="ruby-identifier">k</span>)
259
- 57: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
260
- 58: <span class="ruby-keyword kw">end</span>
261
- 59: <span class="ruby-keyword kw">end</span>
262
- 60: <span class="ruby-keyword kw">end</span>
263
- 61: <span class="ruby-keyword kw">end</span>
264
- 62: <span class="ruby-keyword kw">end</span>
287
+ <span class="ruby-comment cmt"># File lib/configuration.rb, line 64</span>
288
+ 64: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
289
+ 65: <span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">storage</span><span class="ruby-operator">|</span>
290
+ 66: <span class="ruby-identifier">storage</span>.<span class="ruby-identifier">parameters</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-identifier">v</span><span class="ruby-operator">|</span>
291
+ 67: <span class="ruby-constant">Configatron</span><span class="ruby-operator">::</span><span class="ruby-constant">Configuration</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-keyword kw">do</span>
292
+ 68: <span class="ruby-keyword kw">begin</span>
293
+ 69: <span class="ruby-identifier">undef_method</span>(<span class="ruby-identifier">k</span>)
294
+ 70: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">NameError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
295
+ 71: <span class="ruby-keyword kw">end</span>
296
+ 72: <span class="ruby-keyword kw">end</span>
297
+ 73: <span class="ruby-keyword kw">end</span>
298
+ 74: <span class="ruby-keyword kw">end</span>
299
+ 75: <span class="ruby-keyword kw">end</span>
265
300
  </pre>
266
301
  </div>
267
302
  </div>
268
303
  </div>
269
304
 
270
- <div id="method-M000010" class="method-detail">
271
- <a name="M000010"></a>
305
+ <div id="method-M000014" class="method-detail">
306
+ <a name="M000014"></a>
272
307
 
273
308
  <div class="method-heading">
274
- <a href="#M000010" class="method-signature">
309
+ <a href="#M000014" class="method-signature">
275
310
  <span class="method-name">reset!</span><span class="method-args">()</span>
276
311
  </a>
277
312
  </div>
278
313
 
279
314
  <div class="method-description">
280
315
  <p>
281
- Does a hard <a href="Configuration.html#M000011">reset</a> of the <a
316
+ Does a hard <a href="Configuration.html#M000015">reset</a> of the <a
282
317
  href="Configuration.html">Configatron::Configuration</a> class. All methods
283
318
  are undefined, the list of configuration parameters is emptied, and the
284
- nil_for_missing method gets <a href="Configuration.html#M000011">reset</a>
319
+ nil_for_missing method gets <a href="Configuration.html#M000015">reset</a>
285
320
  to false.
286
321
  </p>
287
322
  <p><a class="source-toggle" href="#"
288
- onclick="toggleCode('M000010-source');return false;">[Source]</a></p>
289
- <div class="method-source-code" id="M000010-source">
323
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
324
+ <div class="method-source-code" id="M000014-source">
290
325
  <pre>
291
- <span class="ruby-comment cmt"># File lib/configuration.rb, line 44</span>
292
- 44: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset!</span>
293
- 45: <span class="ruby-identifier">reset</span>
294
- 46: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">nil_for_missing</span> = <span class="ruby-keyword kw">false</span>
295
- 47: <span class="ruby-ivar">@_storage_list</span> = []
296
- 48: <span class="ruby-keyword kw">end</span>
326
+ <span class="ruby-comment cmt"># File lib/configuration.rb, line 57</span>
327
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset!</span>
328
+ 58: <span class="ruby-identifier">reset</span>
329
+ 59: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">nil_for_missing</span> = <span class="ruby-keyword kw">false</span>
330
+ 60: <span class="ruby-ivar">@_storage_list</span> = []
331
+ 61: <span class="ruby-keyword kw">end</span>
297
332
  </pre>
298
333
  </div>
299
334
  </div>
300
335
  </div>
301
336
 
302
- <div id="method-M000012" class="method-detail">
303
- <a name="M000012"></a>
337
+ <div id="method-M000016" class="method-detail">
338
+ <a name="M000016"></a>
304
339
 
305
340
  <div class="method-heading">
306
- <a href="#M000012" class="method-signature">
341
+ <a href="#M000016" class="method-signature">
307
342
  <span class="method-name">revert</span><span class="method-args">(step = 1)</span>
308
343
  </a>
309
344
  </div>
@@ -313,15 +348,15 @@ to false.
313
348
  Peels back n number of configuration parameters.
314
349
  </p>
315
350
  <p><a class="source-toggle" href="#"
316
- onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
317
- <div class="method-source-code" id="M000012-source">
351
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
352
+ <div class="method-source-code" id="M000016-source">
318
353
  <pre>
319
- <span class="ruby-comment cmt"># File lib/configuration.rb, line 65</span>
320
- 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revert</span>(<span class="ruby-identifier">step</span> = <span class="ruby-value">1</span>)
321
- 66: <span class="ruby-identifier">reset</span>
322
- 67: <span class="ruby-identifier">step</span>.<span class="ruby-identifier">times</span> {<span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">pop</span>}
323
- 68: <span class="ruby-identifier">reload</span>
324
- 69: <span class="ruby-keyword kw">end</span>
354
+ <span class="ruby-comment cmt"># File lib/configuration.rb, line 78</span>
355
+ 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">revert</span>(<span class="ruby-identifier">step</span> = <span class="ruby-value">1</span>)
356
+ 79: <span class="ruby-identifier">reset</span>
357
+ 80: <span class="ruby-identifier">step</span>.<span class="ruby-identifier">times</span> {<span class="ruby-ivar">@_storage_list</span>.<span class="ruby-identifier">pop</span>}
358
+ 81: <span class="ruby-identifier">reload</span>
359
+ 82: <span class="ruby-keyword kw">end</span>
325
360
  </pre>
326
361
  </div>
327
362
  </div>
@@ -96,6 +96,7 @@ Used to store each of the &#8216;sets&#8217; of configuration parameters.
96
96
  <a href="#M000004">method_missing</a>&nbsp;&nbsp;
97
97
  <a href="#M000006">namespace</a>&nbsp;&nbsp;
98
98
  <a href="#M000003">new</a>&nbsp;&nbsp;
99
+ <a href="#M000007">reload</a>&nbsp;&nbsp;
99
100
  </div>
100
101
  </div>
101
102
 
@@ -266,6 +267,33 @@ parameters.
266
267
  </div>
267
268
  </div>
268
269
 
270
+ <div id="method-M000007" class="method-detail">
271
+ <a name="M000007"></a>
272
+
273
+ <div class="method-heading">
274
+ <a href="#M000007" class="method-signature">
275
+ <span class="method-name">reload</span><span class="method-args">()</span>
276
+ </a>
277
+ </div>
278
+
279
+ <div class="method-description">
280
+ <p>
281
+ Called when a <a href="Store.html#M000007">reload</a> is called on
282
+ configatron. Useful for subclasses that may need to read a file in,
283
+ etc&#8230;
284
+ </p>
285
+ <p><a class="source-toggle" href="#"
286
+ onclick="toggleCode('M000007-source');return false;">[Source]</a></p>
287
+ <div class="method-source-code" id="M000007-source">
288
+ <pre>
289
+ <span class="ruby-comment cmt"># File lib/store.rb, line 50</span>
290
+ 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>
291
+ 51: <span class="ruby-keyword kw">end</span>
292
+ </pre>
293
+ </div>
294
+ </div>
295
+ </div>
296
+
269
297
 
270
298
  </div>
271
299
 
@@ -0,0 +1,203 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Configatron::YamlStore</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Configatron::YamlStore</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/yaml_store_rb.html">
59
+ lib/yaml_store.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Store.html">
69
+ Configatron::Store
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ Used to store each of the &#8216;sets&#8217; of configuration parameters
86
+ that came from a YAML file.
87
+ </p>
88
+
89
+ </div>
90
+
91
+
92
+ </div>
93
+
94
+ <div id="method-list">
95
+ <h3 class="section-bar">Methods</h3>
96
+
97
+ <div class="name-list">
98
+ <a href="#M000008">new</a>&nbsp;&nbsp;
99
+ <a href="#M000009">reload</a>&nbsp;&nbsp;
100
+ </div>
101
+ </div>
102
+
103
+ </div>
104
+
105
+
106
+ <!-- if includes -->
107
+
108
+ <div id="section">
109
+
110
+
111
+
112
+
113
+
114
+ <div id="attribute-list">
115
+ <h3 class="section-bar">Attributes</h3>
116
+
117
+ <div class="name-list">
118
+ <table>
119
+ <tr class="top-aligned-row context-row">
120
+ <td class="context-item-name">file_location</td>
121
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
122
+ <td class="context-item-desc"></td>
123
+ </tr>
124
+ </table>
125
+ </div>
126
+ </div>
127
+
128
+
129
+
130
+ <!-- if method_list -->
131
+ <div id="methods">
132
+ <h3 class="section-bar">Public Class methods</h3>
133
+
134
+ <div id="method-M000008" class="method-detail">
135
+ <a name="M000008"></a>
136
+
137
+ <div class="method-heading">
138
+ <a href="#M000008" class="method-signature">
139
+ <span class="method-name">new</span><span class="method-args">(file_location)</span>
140
+ </a>
141
+ </div>
142
+
143
+ <div class="method-description">
144
+ <p>
145
+ Takes the full path to the YAML file.
146
+ </p>
147
+ <p><a class="source-toggle" href="#"
148
+ onclick="toggleCode('M000008-source');return false;">[Source]</a></p>
149
+ <div class="method-source-code" id="M000008-source">
150
+ <pre>
151
+ <span class="ruby-comment cmt"># File lib/yaml_store.rb, line 9</span>
152
+ 9: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">file_location</span>)
153
+ 10: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">params_from_yaml</span>(<span class="ruby-identifier">file_location</span>))
154
+ 11: <span class="ruby-ivar">@file_location</span> = <span class="ruby-identifier">file_location</span>
155
+ 12: <span class="ruby-keyword kw">end</span>
156
+ </pre>
157
+ </div>
158
+ </div>
159
+ </div>
160
+
161
+ <h3 class="section-bar">Public Instance methods</h3>
162
+
163
+ <div id="method-M000009" class="method-detail">
164
+ <a name="M000009"></a>
165
+
166
+ <div class="method-heading">
167
+ <a href="#M000009" class="method-signature">
168
+ <span class="method-name">reload</span><span class="method-args">()</span>
169
+ </a>
170
+ </div>
171
+
172
+ <div class="method-description">
173
+ <p>
174
+ Re-reads the YAML file.
175
+ </p>
176
+ <p><a class="source-toggle" href="#"
177
+ onclick="toggleCode('M000009-source');return false;">[Source]</a></p>
178
+ <div class="method-source-code" id="M000009-source">
179
+ <pre>
180
+ <span class="ruby-comment cmt"># File lib/yaml_store.rb, line 15</span>
181
+ 15: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>
182
+ 16: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_location</span>
183
+ 17: <span class="ruby-identifier">params_from_yaml</span>(<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_location</span>)
184
+ 18: <span class="ruby-keyword kw">end</span>
185
+ 19: <span class="ruby-keyword kw">end</span>
186
+ </pre>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+
192
+ </div>
193
+
194
+
195
+ </div>
196
+
197
+
198
+ <div id="validator-badges">
199
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
200
+ </div>
201
+
202
+ </body>
203
+ </html>
@@ -80,7 +80,7 @@
80
80
  <h3 class="section-bar">Methods</h3>
81
81
 
82
82
  <div class="name-list">
83
- <a href="#M000013">configatron</a>&nbsp;&nbsp;
83
+ <a href="#M000017">configatron</a>&nbsp;&nbsp;
84
84
  </div>
85
85
  </div>
86
86
 
@@ -102,11 +102,11 @@
102
102
  <div id="methods">
103
103
  <h3 class="section-bar">Public Instance methods</h3>
104
104
 
105
- <div id="method-M000013" class="method-detail">
106
- <a name="M000013"></a>
105
+ <div id="method-M000017" class="method-detail">
106
+ <a name="M000017"></a>
107
107
 
108
108
  <div class="method-heading">
109
- <a href="#M000013" class="method-signature">
109
+ <a href="#M000017" class="method-signature">
110
110
  <span class="method-name">configatron</span><span class="method-args">(&amp;block)</span>
111
111
  </a>
112
112
  </div>
@@ -120,8 +120,8 @@ Configatron::Configatron configure method and yield up a <a
120
120
  href="Configatron/Store.html">Configatron::Store</a> object.
121
121
  </p>
122
122
  <p><a class="source-toggle" href="#"
123
- onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
124
- <div class="method-source-code" id="M000013-source">
123
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
124
+ <div class="method-source-code" id="M000017-source">
125
125
  <pre>
126
126
  <span class="ruby-comment cmt"># File lib/kernel.rb, line 6</span>
127
127
  6: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">configatron</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
data/doc/created.rid CHANGED
@@ -1 +1 @@
1
- Fri, 29 Aug 2008 12:14:31 -0400
1
+ Thu, 04 Sep 2008 13:46:36 -0400
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu Jun 12 13:05:51 -0400 2008</td>
59
+ <td>Thu Sep 04 11:15:39 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -74,6 +74,7 @@
74
74
 
75
75
  <div class="name-list">
76
76
  singleton&nbsp;&nbsp;
77
+ yaml&nbsp;&nbsp;
77
78
  </div>
78
79
  </div>
79
80
 
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri Aug 29 12:10:22 -0400 2008</td>
59
+ <td>Thu Sep 04 11:12:56 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri Aug 29 12:12:56 -0400 2008</td>
59
+ <td>Thu Sep 04 11:16:41 -0400 2008</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>File: yaml_store.rb</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="fileHeader">
50
+ <h1>yaml_store.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/yaml_store.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Thu Sep 04 11:17:28 -0400 2008</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <!-- if method_list -->
91
+
92
+
93
+ </div>
94
+
95
+
96
+ <div id="validator-badges">
97
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
+ </div>
99
+
100
+ </body>
101
+ </html>
@@ -23,6 +23,7 @@
23
23
  <a href="classes/Configatron/Configuration.html">Configatron::Configuration</a><br />
24
24
  <a href="classes/Configatron/Helpers.html">Configatron::Helpers</a><br />
25
25
  <a href="classes/Configatron/Store.html">Configatron::Store</a><br />
26
+ <a href="classes/Configatron/YamlStore.html">Configatron::YamlStore</a><br />
26
27
  <a href="classes/Kernel.html">Kernel</a><br />
27
28
  </div>
28
29
  </div>
@@ -26,6 +26,7 @@
26
26
  <a href="files/lib/helpers_rb.html">lib/helpers.rb</a><br />
27
27
  <a href="files/lib/kernel_rb.html">lib/kernel.rb</a><br />
28
28
  <a href="files/lib/store_rb.html">lib/store.rb</a><br />
29
+ <a href="files/lib/yaml_store_rb.html">lib/yaml_store.rb</a><br />
29
30
  </div>
30
31
  </div>
31
32
  </body>
@@ -20,19 +20,23 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Kernel.html#M000013">configatron (Kernel)</a><br />
24
- <a href="classes/Configatron/Configuration.html#M000007">configure (Configatron::Configuration)</a><br />
25
- <a href="classes/Configatron/Configuration.html#M000008">configure_from_hash (Configatron::Configuration)</a><br />
23
+ <a href="classes/Kernel.html#M000017">configatron (Kernel)</a><br />
24
+ <a href="classes/Configatron/Configuration.html#M000010">configure (Configatron::Configuration)</a><br />
25
+ <a href="classes/Configatron/Configuration.html#M000011">configure_from_hash (Configatron::Configuration)</a><br />
26
+ <a href="classes/Configatron/Configuration.html#M000012">configure_from_yaml (Configatron::Configuration)</a><br />
26
27
  <a href="classes/Configatron/Store.html#M000005">exists? (Configatron::Store)</a><br />
27
28
  <a href="classes/Configatron/Helpers.html#M000001">exists? (Configatron::Helpers)</a><br />
28
29
  <a href="classes/Configatron/Store.html#M000004">method_missing (Configatron::Store)</a><br />
29
30
  <a href="classes/Configatron/Store.html#M000006">namespace (Configatron::Store)</a><br />
31
+ <a href="classes/Configatron/YamlStore.html#M000008">new (Configatron::YamlStore)</a><br />
30
32
  <a href="classes/Configatron/Store.html#M000003">new (Configatron::Store)</a><br />
31
- <a href="classes/Configatron/Configuration.html#M000009">reload (Configatron::Configuration)</a><br />
32
- <a href="classes/Configatron/Configuration.html#M000011">reset (Configatron::Configuration)</a><br />
33
- <a href="classes/Configatron/Configuration.html#M000010">reset! (Configatron::Configuration)</a><br />
33
+ <a href="classes/Configatron/Store.html#M000007">reload (Configatron::Store)</a><br />
34
+ <a href="classes/Configatron/Configuration.html#M000013">reload (Configatron::Configuration)</a><br />
35
+ <a href="classes/Configatron/YamlStore.html#M000009">reload (Configatron::YamlStore)</a><br />
36
+ <a href="classes/Configatron/Configuration.html#M000015">reset (Configatron::Configuration)</a><br />
37
+ <a href="classes/Configatron/Configuration.html#M000014">reset! (Configatron::Configuration)</a><br />
34
38
  <a href="classes/Configatron/Helpers.html#M000002">retrieve (Configatron::Helpers)</a><br />
35
- <a href="classes/Configatron/Configuration.html#M000012">revert (Configatron::Configuration)</a><br />
39
+ <a href="classes/Configatron/Configuration.html#M000016">revert (Configatron::Configuration)</a><br />
36
40
  </div>
37
41
  </div>
38
42
  </body>
data/lib/configatron.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'singleton'
2
+ require 'yaml'
2
3
  require File.join(File.dirname(__FILE__), 'helpers')
3
4
  require File.join(File.dirname(__FILE__), 'kernel')
4
5
  require File.join(File.dirname(__FILE__), 'configuration')
5
6
  require File.join(File.dirname(__FILE__), 'store')
7
+ require File.join(File.dirname(__FILE__), 'yaml_store')
6
8
 
7
9
  module Configatron # :nodoc:
8
10
  end
data/lib/configuration.rb CHANGED
@@ -31,9 +31,22 @@ module Configatron
31
31
  load_methods(storage)
32
32
  end
33
33
 
34
+ # Used to load configuration settings from a YAML file.
35
+ def configure_from_yaml(path)
36
+ begin
37
+ storage = Configatron::YamlStore.new(path)
38
+ @_storage_list << storage
39
+ load_methods(storage)
40
+ rescue Errno::ENOENT => e
41
+ puts e.message
42
+ # file doesn't exist.
43
+ end
44
+ end
45
+
34
46
  # Replays the history of configurations.
35
47
  def reload
36
48
  @_storage_list.each do |storage|
49
+ storage.reload
37
50
  load_methods(storage)
38
51
  end
39
52
  end
data/lib/store.rb CHANGED
@@ -44,6 +44,11 @@ module Configatron
44
44
  @parameters[name.to_sym] = ns
45
45
  end
46
46
  end
47
+
48
+ # Called when a reload is called on configatron. Useful for subclasses that
49
+ # may need to read a file in, etc...
50
+ def reload
51
+ end
47
52
 
48
53
  end # Store
49
54
  end # Configatron
data/lib/yaml_store.rb ADDED
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), 'store')
2
+ module Configatron
3
+ # Used to store each of the 'sets' of configuration parameters that came from a YAML file.
4
+ class YamlStore < Configatron::Store
5
+
6
+ attr_accessor :file_location
7
+
8
+ # Takes the full path to the YAML file.
9
+ def initialize(file_location)
10
+ super(params_from_yaml(file_location))
11
+ @file_location = file_location
12
+ end
13
+
14
+ # Re-reads the YAML file.
15
+ def reload
16
+ if self.file_location
17
+ params_from_yaml(self.file_location)
18
+ end
19
+ end
20
+
21
+ private
22
+ def params_from_yaml(file_location)
23
+ begin
24
+ @parameters = YAML.load(File.read(file_location))
25
+ return @parameters
26
+ rescue Errno::ENOENT => e
27
+ puts e
28
+ end
29
+ return {}
30
+ end
31
+
32
+ end
33
+ end
@@ -1,3 +1,4 @@
1
+ require 'fileutils'
1
2
  require 'pathname'
2
3
  require Pathname(__FILE__).dirname.expand_path.parent + 'spec_helper'
3
4
 
@@ -29,6 +30,66 @@ describe Configatron::Configuration do
29
30
 
30
31
  end
31
32
 
33
+ describe "configure_from_yaml" do
34
+
35
+ before :each do
36
+ configatron.reset!
37
+ @futurama = File.join(File.dirname(__FILE__), 'futurama.yml')
38
+ FileUtils.rm_f(@futurama)
39
+ end
40
+
41
+ after :each do
42
+ FileUtils.rm_f(@futurama)
43
+ end
44
+
45
+ it "should take a path to YAML file and use it configure configatron" do
46
+ configatron.should_not respond_to(:family_guy)
47
+ configatron.should_not respond_to(:lois)
48
+
49
+ configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'family_guy.yml'))
50
+
51
+ configatron.should respond_to(:family_guy)
52
+ configatron.should respond_to(:lois)
53
+
54
+ configatron.family_guy.should == "Peter Griffin"
55
+ configatron.lois.should == "Lois Griffin"
56
+ end
57
+
58
+ it "should silently file if the file doesn't exist" do
59
+ lambda {configatron.configure_from_yaml(File.join(File.dirname(__FILE__), 'i_dont_exist.yml'))}.should_not raise_error(Errno::ENOENT)
60
+ end
61
+
62
+ it "should re-read the file during a reload" do
63
+ File.open(@futurama, 'w') do |f|
64
+ f.puts 'bender: robot'
65
+ f.puts 'fry: human'
66
+ end
67
+
68
+ configatron.should_not respond_to(:bender)
69
+ configatron.should_not respond_to(:fry)
70
+
71
+ configatron.configure_from_yaml(@futurama)
72
+
73
+ configatron.should respond_to(:bender)
74
+ configatron.should respond_to(:fry)
75
+
76
+ configatron.bender.should == 'robot'
77
+ configatron.fry.should == 'human'
78
+
79
+ File.open(@futurama, 'w') do |f|
80
+ f.puts 'bender: Bending Robot'
81
+ f.puts 'fry: Human Male'
82
+ end
83
+
84
+ configatron.reload
85
+
86
+ configatron.bender.should == 'Bending Robot'
87
+ configatron.fry.should == 'Human Male'
88
+
89
+ end
90
+
91
+ end
92
+
32
93
  describe "revert" do
33
94
 
34
95
  it "should roll back 1 level by default" do
@@ -0,0 +1,2 @@
1
+ family_guy: Peter Griffin
2
+ lois: Lois Griffin
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: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - markbates
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-29 00:00:00 -04:00
12
+ date: 2008-09-04 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -27,10 +27,12 @@ files:
27
27
  - lib/helpers.rb
28
28
  - lib/kernel.rb
29
29
  - lib/store.rb
30
+ - lib/yaml_store.rb
30
31
  - README
31
32
  - doc/classes/Configatron/Configuration.html
32
33
  - doc/classes/Configatron/Helpers.html
33
34
  - doc/classes/Configatron/Store.html
35
+ - doc/classes/Configatron/YamlStore.html
34
36
  - doc/classes/Kernel.html
35
37
  - doc/created.rid
36
38
  - doc/files/lib/configatron_rb.html
@@ -38,6 +40,7 @@ files:
38
40
  - doc/files/lib/helpers_rb.html
39
41
  - doc/files/lib/kernel_rb.html
40
42
  - doc/files/lib/store_rb.html
43
+ - doc/files/lib/yaml_store_rb.html
41
44
  - doc/files/README.html
42
45
  - doc/fr_class_index.html
43
46
  - doc/fr_file_index.html
@@ -76,6 +79,7 @@ test_files:
76
79
  - spec/spec_helper.rb
77
80
  - spec/unit
78
81
  - spec/unit/configuration_spec.rb
82
+ - spec/unit/family_guy.yml
79
83
  - spec/unit/helpers_spec.rb
80
84
  - spec/unit/kernel_spec.rb
81
85
  - spec/unit/store_spec.rb