rconfig 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/ChangeLog +7 -0
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +2 -0
  4. data/Rakefile +11 -8
  5. data/doc/Array.html +184 -0
  6. data/doc/Hash.html +360 -0
  7. data/doc/NilClass.html +233 -0
  8. data/doc/RConfig.html +328 -0
  9. data/doc/RConfig/Callbacks.html +295 -0
  10. data/doc/RConfig/Cascade.html +316 -0
  11. data/doc/RConfig/Config.html +441 -0
  12. data/doc/RConfig/ConfigError.html +187 -0
  13. data/doc/RConfig/Constants.html +271 -0
  14. data/doc/RConfig/CoreMethods.html +814 -0
  15. data/doc/RConfig/DisabledLogger.html +424 -0
  16. data/doc/RConfig/Exceptions.html +266 -0
  17. data/doc/RConfig/Generators.html +186 -0
  18. data/doc/RConfig/Generators/InstallGenerator.html +233 -0
  19. data/doc/RConfig/InvalidLoadPathError.html +187 -0
  20. data/doc/RConfig/LoadPaths.html +375 -0
  21. data/doc/RConfig/Logger.html +184 -0
  22. data/doc/RConfig/PropertiesFile.html +399 -0
  23. data/doc/RConfig/Reload.html +481 -0
  24. data/doc/RConfig/Settings.html +188 -0
  25. data/doc/RConfig/Utils.html +841 -0
  26. data/doc/README_rdoc.html +331 -0
  27. data/doc/String.html +184 -0
  28. data/doc/created.rid +21 -1
  29. data/doc/index.html +423 -20
  30. data/doc/lib/generators/rconfig/install_generator_rb.html +52 -0
  31. data/doc/lib/generators/rconfig/templates/rconfig_rb.html +56 -0
  32. data/doc/lib/rconfig/callbacks_rb.html +52 -0
  33. data/doc/lib/rconfig/cascade_rb.html +52 -0
  34. data/doc/lib/rconfig/config_rb.html +61 -0
  35. data/doc/lib/rconfig/constants_rb.html +52 -0
  36. data/doc/lib/rconfig/core_ext/array_rb.html +52 -0
  37. data/doc/lib/rconfig/core_ext/hash_rb.html +61 -0
  38. data/doc/lib/rconfig/core_ext/nil_rb.html +52 -0
  39. data/doc/lib/rconfig/core_ext/string_rb.html +52 -0
  40. data/doc/lib/rconfig/core_methods_rb.html +55 -0
  41. data/doc/lib/rconfig/exceptions_rb.html +58 -0
  42. data/doc/lib/rconfig/load_paths_rb.html +52 -0
  43. data/doc/lib/rconfig/logger_rb.html +52 -0
  44. data/doc/lib/rconfig/properties_file_rb.html +93 -0
  45. data/doc/lib/rconfig/reload_rb.html +52 -0
  46. data/doc/lib/rconfig/settings_rb.html +52 -0
  47. data/doc/lib/rconfig/utils_rb.html +52 -0
  48. data/doc/lib/rconfig_rb.html +151 -0
  49. data/doc/rdoc.css +706 -0
  50. data/lib/rconfig.rb +1 -1
  51. data/lib/rconfig/load_paths.rb +2 -2
  52. data/lib/tasks/rdoc.rake +3 -4
  53. data/rconfig.gemspec +4 -2
  54. data/spec/config/erb_contents.yml +3 -0
  55. data/spec/config/props_config.conf +18 -0
  56. data/spec/config/spec.yml +17 -0
  57. data/spec/config/xml_config.xml +22 -0
  58. data/spec/config2/.gitkeep +0 -0
  59. data/spec/rconfig/load_paths_spec.rb +37 -0
  60. data/spec/rconfig/reload_spec.rb +37 -0
  61. data/spec/rconfig_spec.rb +61 -3
  62. data/spec/spec_helper.rb +12 -8
  63. metadata +82 -40
  64. data/doc/classes/ClassVariables.html +0 -111
  65. data/doc/classes/ConfigError.html +0 -120
  66. data/doc/classes/ConfigHash.html +0 -354
  67. data/doc/classes/Constants.html +0 -226
  68. data/doc/classes/Hash.html +0 -269
  69. data/doc/classes/InvalidConfigPathError.html +0 -119
  70. data/doc/classes/Object.html +0 -220
  71. data/doc/classes/PropertiesFileParser.html +0 -282
  72. data/doc/classes/RConfig.html +0 -1745
  73. data/doc/files/README_rdoc.html +0 -271
  74. data/doc/files/lib/rconfig/class_variables_rb.html +0 -107
  75. data/doc/files/lib/rconfig/config_hash_rb.html +0 -114
  76. data/doc/files/lib/rconfig/constants_rb.html +0 -101
  77. data/doc/files/lib/rconfig/core_ext/hash_rb.html +0 -114
  78. data/doc/files/lib/rconfig/core_ext/object_rb.html +0 -101
  79. data/doc/files/lib/rconfig/core_ext_rb.html +0 -114
  80. data/doc/files/lib/rconfig/exceptions_rb.html +0 -110
  81. data/doc/files/lib/rconfig/properties_file_parser_rb.html +0 -146
  82. data/doc/files/lib/rconfig/rconfig_rb.html +0 -186
  83. data/doc/files/lib/rconfig_rb.html +0 -117
  84. data/doc/fr_class_index.html +0 -35
  85. data/doc/fr_file_index.html +0 -37
  86. data/doc/fr_method_index.html +0 -75
  87. data/doc/rdoc-style.css +0 -208
  88. data/lib/tasks/gem.rake +0 -14
  89. data/lib/tasks/spec.rake +0 -25
  90. data/spec/core_ext/object_spec.rb +0 -44
@@ -0,0 +1,399 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Class: RConfig::PropertiesFile</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="class">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/rconfig/properties_file_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/rconfig/properties_file.rb">lib/rconfig/properties_file.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link">Object</p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-parse">::parse</a></li>
73
+
74
+ <li><a href="#method-c-parse_references">::parse_references</a></li>
75
+
76
+ </ul>
77
+ </div>
78
+
79
+
80
+ <!-- Included Modules -->
81
+
82
+ <div id="includes-section" class="section">
83
+ <h3 class="section-header">Included Modules</h3>
84
+ <ul class="link-list">
85
+
86
+
87
+ <li><span class="include">Singleton</span></li>
88
+
89
+
90
+ </ul>
91
+ </div>
92
+
93
+ </div>
94
+
95
+ <div id="project-metadata">
96
+
97
+
98
+ <div id="fileindex-section" class="section project-section">
99
+ <h3 class="section-header">Files</h3>
100
+ <ul>
101
+
102
+ <li class="file"><a href="../README_rdoc.html">README.rdoc</a></li>
103
+
104
+ </ul>
105
+ </div>
106
+
107
+
108
+ <div id="classindex-section" class="section project-section">
109
+ <h3 class="section-header">Class Index
110
+ <span class="search-toggle"><img src="../images/find.png"
111
+ height="16" width="16" alt="[+]"
112
+ title="show/hide quicksearch" /></span></h3>
113
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
114
+ <fieldset>
115
+ <legend>Quicksearch</legend>
116
+ <input type="text" name="quicksearch" value=""
117
+ class="quicksearch-field" />
118
+ </fieldset>
119
+ </form>
120
+
121
+ <ul class="link-list">
122
+
123
+ <li><a href="../RConfig.html">RConfig</a></li>
124
+
125
+ <li><a href="../RConfig/Callbacks.html">RConfig::Callbacks</a></li>
126
+
127
+ <li><a href="../RConfig/Cascade.html">RConfig::Cascade</a></li>
128
+
129
+ <li><a href="../RConfig/Config.html">RConfig::Config</a></li>
130
+
131
+ <li><a href="../RConfig/ConfigError.html">RConfig::ConfigError</a></li>
132
+
133
+ <li><a href="../RConfig/Constants.html">RConfig::Constants</a></li>
134
+
135
+ <li><a href="../RConfig/CoreMethods.html">RConfig::CoreMethods</a></li>
136
+
137
+ <li><a href="../RConfig/DisabledLogger.html">RConfig::DisabledLogger</a></li>
138
+
139
+ <li><a href="../RConfig/Exceptions.html">RConfig::Exceptions</a></li>
140
+
141
+ <li><a href="../RConfig/Generators.html">RConfig::Generators</a></li>
142
+
143
+ <li><a href="../RConfig/Generators/InstallGenerator.html">RConfig::Generators::InstallGenerator</a></li>
144
+
145
+ <li><a href="../RConfig/InvalidLoadPathError.html">RConfig::InvalidLoadPathError</a></li>
146
+
147
+ <li><a href="../RConfig/LoadPaths.html">RConfig::LoadPaths</a></li>
148
+
149
+ <li><a href="../RConfig/PropertiesFile.html">RConfig::PropertiesFile</a></li>
150
+
151
+ <li><a href="../RConfig/Reload.html">RConfig::Reload</a></li>
152
+
153
+ <li><a href="../RConfig/Settings.html">RConfig::Settings</a></li>
154
+
155
+ <li><a href="../RConfig/Utils.html">RConfig::Utils</a></li>
156
+
157
+ <li><a href="../Array.html">Array</a></li>
158
+
159
+ <li><a href="../Hash.html">Hash</a></li>
160
+
161
+ <li><a href="../NilClass.html">NilClass</a></li>
162
+
163
+ <li><a href="../String.html">String</a></li>
164
+
165
+ </ul>
166
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
167
+ </div>
168
+
169
+
170
+ </div>
171
+ </div>
172
+
173
+ <div id="documentation">
174
+ <h1 class="class">RConfig::PropertiesFile</h1>
175
+
176
+ <div id="description">
177
+
178
+ </div>
179
+
180
+ <!-- Constants -->
181
+
182
+ <div id="constants-list" class="section">
183
+ <h3 class="section-header">Constants</h3>
184
+ <dl>
185
+
186
+ <dt><a name="COMMENT">COMMENT</a></dt>
187
+
188
+ <dd class="description"></dd>
189
+
190
+
191
+ <dt><a name="KEYVAL">KEYVAL</a></dt>
192
+
193
+ <dd class="description"></dd>
194
+
195
+
196
+ <dt><a name="QUOTES">QUOTES</a></dt>
197
+
198
+ <dd class="description"></dd>
199
+
200
+
201
+ <dt><a name="GROUP">GROUP</a></dt>
202
+
203
+ <dd class="description"></dd>
204
+
205
+
206
+ <dt><a name="NAMEGRP">NAMEGRP</a></dt>
207
+
208
+ <dd class="description"></dd>
209
+
210
+
211
+ <dt><a name="KEY_REF">KEY_REF</a></dt>
212
+
213
+ <dd class="description"></dd>
214
+
215
+
216
+ </dl>
217
+ </div>
218
+
219
+
220
+ <!-- Attributes -->
221
+
222
+
223
+ <!-- Methods -->
224
+
225
+ <div id="public-class-method-details" class="method-section section">
226
+ <h3 class="section-header">Public Class Methods</h3>
227
+
228
+
229
+ <div id="parse-method" class="method-detail ">
230
+ <a name="method-c-parse"></a>
231
+
232
+ <div class="method-heading">
233
+
234
+ <span class="method-name">parse</span><span
235
+ class="method-args">(config_file)</span>
236
+ <span class="method-click-advice">click to toggle source</span>
237
+
238
+ </div>
239
+
240
+ <div class="method-description">
241
+
242
+ <p>
243
+ Parse config file and import data into hash to be stored in config.
244
+ </p>
245
+
246
+
247
+
248
+ <div class="method-source-code"
249
+ id="parse-source">
250
+ <pre>
251
+ <span class="ruby-comment cmt"># File lib/rconfig/properties_file.rb, line 49</span>
252
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">config_file</span>)
253
+ 50: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'Invalid config file name.'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">config_file</span>
254
+ 51:
255
+ 52: <span class="ruby-identifier">config</span> = {}
256
+ 53:
257
+ 54: <span class="ruby-comment cmt"># The config is top down.. anything after a [group] gets added as part</span>
258
+ 55: <span class="ruby-comment cmt"># of that group until a new [group] is found. </span>
259
+ 56: <span class="ruby-identifier">group</span>, <span class="ruby-identifier">topgrp</span> = <span class="ruby-keyword kw">nil</span>
260
+ 57: <span class="ruby-identifier">config_file</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;\n&quot;</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span> <span class="ruby-comment cmt"># for each line in the config file</span>
261
+ 58: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">strip!</span>
262
+ 59: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">COMMENT</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>) <span class="ruby-comment cmt"># skip comments (lines that state with '#')</span>
263
+ 60: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">KEYVAL</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>) <span class="ruby-comment cmt"># if this line is a config property</span>
264
+ 61: <span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">split</span>(<span class="ruby-constant">KEYVAL</span>, <span class="ruby-value">2</span>) <span class="ruby-comment cmt"># parse key and value from line</span>
265
+ 62: <span class="ruby-identifier">key</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">strip</span>
266
+ 63: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">val</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">strip</span>
267
+ 64: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span>
268
+ 65: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">val</span> <span class="ruby-operator">=~</span> <span class="ruby-constant">QUOTES</span> <span class="ruby-comment cmt"># if the value is in quotes</span>
269
+ 66: <span class="ruby-identifier">value</span> = <span class="ruby-node">$1</span> <span class="ruby-comment cmt"># strip out value from quotes</span>
270
+ 67: <span class="ruby-keyword kw">else</span>
271
+ 68: <span class="ruby-identifier">value</span> = <span class="ruby-identifier">val</span> <span class="ruby-comment cmt"># otherwise, leave as-is</span>
272
+ 69: <span class="ruby-keyword kw">end</span>
273
+ 70: <span class="ruby-keyword kw">else</span>
274
+ 71: <span class="ruby-identifier">value</span> = <span class="ruby-value str">''</span> <span class="ruby-comment cmt"># if value was nil, set it to empty string</span>
275
+ 72: <span class="ruby-keyword kw">end</span>
276
+ 73:
277
+ 74: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">topgrp</span> <span class="ruby-comment cmt"># If there was a top-level named group, then there must be a group.</span>
278
+ 75: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">topgrp</span>][<span class="ruby-identifier">group</span>][<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> <span class="ruby-comment cmt"># so add the prop to the named group</span>
279
+ 76: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">group</span> <span class="ruby-comment cmt"># if this property is part of a group</span>
280
+ 77: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">group</span>][<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> <span class="ruby-comment cmt"># then add it to the group</span>
281
+ 78: <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># otherwise... </span>
282
+ 79: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">value</span> <span class="ruby-comment cmt"># add the prop to top-level config</span>
283
+ 80: <span class="ruby-keyword kw">end</span>
284
+ 81:
285
+ 82: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">match</span> = <span class="ruby-constant">NAMEGRP</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>) <span class="ruby-comment cmt"># This line is a named group (i.e. [env &quot;test&quot;], [env &quot;qa&quot;], [env &quot;production&quot;])</span>
286
+ 83: <span class="ruby-identifier">topgrp</span>, <span class="ruby-identifier">group</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_a</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-comment cmt"># There can be multiple groups within a single top-level group</span>
287
+ 84: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">topgrp</span>] <span class="ruby-operator">||=</span> {} <span class="ruby-comment cmt"># add group to top-level group</span>
288
+ 85: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">topgrp</span>][<span class="ruby-identifier">group</span>] <span class="ruby-operator">||=</span> {} <span class="ruby-comment cmt"># add name of group as subgroup (properties are added to subgroup)</span>
289
+ 86:
290
+ 87: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">match</span> = <span class="ruby-constant">GROUP</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">line</span>) <span class="ruby-comment cmt"># if this line is a config group</span>
291
+ 88: <span class="ruby-identifier">group</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_a</span>[<span class="ruby-value">1</span>] <span class="ruby-comment cmt"># parse the group name from line</span>
292
+ 89: <span class="ruby-identifier">topgrp</span> = <span class="ruby-keyword kw">nil</span> <span class="ruby-comment cmt"># we got a new group with no namespace, so reset topgrp</span>
293
+ 90: <span class="ruby-identifier">config</span>[<span class="ruby-identifier">group</span>] <span class="ruby-operator">||=</span> {} <span class="ruby-comment cmt"># add group to top-level config</span>
294
+ 91: <span class="ruby-keyword kw">end</span>
295
+ 92: <span class="ruby-keyword kw">end</span>
296
+ 93: <span class="ruby-keyword kw">end</span>
297
+ 94:
298
+ 95: <span class="ruby-comment cmt"># Pre-populate the values that refer to other properties</span>
299
+ 96: <span class="ruby-comment cmt"># Example:</span>
300
+ 97: <span class="ruby-comment cmt"># root_path = /path/to/root</span>
301
+ 98: <span class="ruby-comment cmt"># image_path = %{root_path}/images</span>
302
+ 99: <span class="ruby-identifier">config</span> = <span class="ruby-identifier">parse_references</span>(<span class="ruby-identifier">config</span>)
303
+ 100:
304
+ 101: <span class="ruby-identifier">config</span> <span class="ruby-comment cmt"># return config hash</span>
305
+ 102: <span class="ruby-keyword kw">end</span></pre>
306
+ </div>
307
+
308
+ </div>
309
+
310
+
311
+
312
+
313
+ </div>
314
+
315
+
316
+ <div id="parse-references-method" class="method-detail ">
317
+ <a name="method-c-parse_references"></a>
318
+
319
+ <div class="method-heading">
320
+
321
+ <span class="method-name">parse_references</span><span
322
+ class="method-args">(hash, config=nil)</span>
323
+ <span class="method-click-advice">click to toggle source</span>
324
+
325
+ </div>
326
+
327
+ <div class="method-description">
328
+
329
+ <p>
330
+ Recursively checks all the values in the hash for references to other
331
+ properties, and replaces the references with the actual values. The syntax
332
+ for referring to another property in the config file is the ley of the
333
+ property wrapped in curly braces, preceded by a percent sign. If the
334
+ property is in a group, then the full namespace must be used.
335
+ </p>
336
+ <p>
337
+ Example:
338
+ </p>
339
+ <pre>
340
+ root_path = /path/to/root # In this property file snippet
341
+ image_path = %{root_path}/images # image path refers to root path</pre>
342
+
343
+
344
+
345
+ <div class="method-source-code"
346
+ id="parse-references-source">
347
+ <pre>
348
+ <span class="ruby-comment cmt"># File lib/rconfig/properties_file.rb, line 116</span>
349
+ 116: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parse_references</span> <span class="ruby-identifier">hash</span>, <span class="ruby-identifier">config</span>=<span class="ruby-keyword kw">nil</span>
350
+ 117: <span class="ruby-identifier">config</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">dup</span>
351
+ 118:
352
+ 119: <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
353
+ 120: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">val</span>
354
+ 121: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">Hash</span>
355
+ 122: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-identifier">parse_references</span>(<span class="ruby-identifier">val</span>, <span class="ruby-identifier">config</span>)
356
+ 123: <span class="ruby-keyword kw">when</span> <span class="ruby-constant">String</span>
357
+ 124: <span class="ruby-identifier">pre</span>, <span class="ruby-identifier">ref</span>, <span class="ruby-identifier">post</span> = <span class="ruby-constant">KEY_REF</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">val</span>).<span class="ruby-identifier">to_a</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
358
+ 125: <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ref</span>
359
+ 126: <span class="ruby-identifier">ref</span> = <span class="ruby-identifier">ref</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'.'</span>).<span class="ruby-identifier">inject</span>(<span class="ruby-identifier">config</span>){<span class="ruby-operator">|</span><span class="ruby-identifier">c</span>,<span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span>[<span class="ruby-identifier">i</span>] }
360
+ 127: [<span class="ruby-identifier">pre</span>, <span class="ruby-identifier">ref</span>, <span class="ruby-identifier">post</span>].<span class="ruby-identifier">join</span>
361
+ 128: <span class="ruby-keyword kw">else</span>
362
+ 129: <span class="ruby-identifier">val</span>
363
+ 130: <span class="ruby-keyword kw">end</span>
364
+ 131: <span class="ruby-keyword kw">end</span>
365
+ 132: <span class="ruby-keyword kw">end</span>
366
+ 133:
367
+ 134: <span class="ruby-identifier">hash</span>
368
+ 135: <span class="ruby-keyword kw">end</span></pre>
369
+ </div>
370
+
371
+ </div>
372
+
373
+
374
+
375
+
376
+ </div>
377
+
378
+
379
+ </div>
380
+
381
+
382
+ </div>
383
+
384
+
385
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
386
+
387
+ <p>Disabled; run with --debug to generate this.</p>
388
+
389
+ </div>
390
+
391
+ <div id="validator-badges">
392
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
393
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
394
+ Rdoc Generator</a> 1.1.6</small>.</p>
395
+ </div>
396
+
397
+ </body>
398
+ </html>
399
+
@@ -0,0 +1,481 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Module: RConfig::Reload</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="module">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/rconfig/reload_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/rconfig/reload.rb">lib/rconfig/reload.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+
56
+ <!-- Namespace Contents -->
57
+
58
+
59
+ <!-- Method Quickref -->
60
+
61
+ <div id="method-list-section" class="section">
62
+ <h3 class="section-header">Methods</h3>
63
+ <ul class="link-list">
64
+
65
+ <li><a href="#method-i-auto_check%3F">#auto_check?</a></li>
66
+
67
+ <li><a href="#method-i-enable_reload%3D">#enable_reload=</a></li>
68
+
69
+ <li><a href="#method-i-reload">#reload</a></li>
70
+
71
+ <li><a href="#method-i-reload%3F">#reload?</a></li>
72
+
73
+ <li><a href="#method-i-reload_disabled%3F">#reload_disabled?</a></li>
74
+
75
+ <li><a href="#method-i-reload_interval%3D">#reload_interval=</a></li>
76
+
77
+ <li><a href="#method-i-without_reload">#without_reload</a></li>
78
+
79
+ </ul>
80
+ </div>
81
+
82
+
83
+ <!-- Included Modules -->
84
+
85
+ </div>
86
+
87
+ <div id="project-metadata">
88
+
89
+
90
+ <div id="fileindex-section" class="section project-section">
91
+ <h3 class="section-header">Files</h3>
92
+ <ul>
93
+
94
+ <li class="file"><a href="../README_rdoc.html">README.rdoc</a></li>
95
+
96
+ </ul>
97
+ </div>
98
+
99
+
100
+ <div id="classindex-section" class="section project-section">
101
+ <h3 class="section-header">Class Index
102
+ <span class="search-toggle"><img src="../images/find.png"
103
+ height="16" width="16" alt="[+]"
104
+ title="show/hide quicksearch" /></span></h3>
105
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
106
+ <fieldset>
107
+ <legend>Quicksearch</legend>
108
+ <input type="text" name="quicksearch" value=""
109
+ class="quicksearch-field" />
110
+ </fieldset>
111
+ </form>
112
+
113
+ <ul class="link-list">
114
+
115
+ <li><a href="../RConfig.html">RConfig</a></li>
116
+
117
+ <li><a href="../RConfig/Callbacks.html">RConfig::Callbacks</a></li>
118
+
119
+ <li><a href="../RConfig/Cascade.html">RConfig::Cascade</a></li>
120
+
121
+ <li><a href="../RConfig/Config.html">RConfig::Config</a></li>
122
+
123
+ <li><a href="../RConfig/ConfigError.html">RConfig::ConfigError</a></li>
124
+
125
+ <li><a href="../RConfig/Constants.html">RConfig::Constants</a></li>
126
+
127
+ <li><a href="../RConfig/CoreMethods.html">RConfig::CoreMethods</a></li>
128
+
129
+ <li><a href="../RConfig/DisabledLogger.html">RConfig::DisabledLogger</a></li>
130
+
131
+ <li><a href="../RConfig/Exceptions.html">RConfig::Exceptions</a></li>
132
+
133
+ <li><a href="../RConfig/Generators.html">RConfig::Generators</a></li>
134
+
135
+ <li><a href="../RConfig/Generators/InstallGenerator.html">RConfig::Generators::InstallGenerator</a></li>
136
+
137
+ <li><a href="../RConfig/InvalidLoadPathError.html">RConfig::InvalidLoadPathError</a></li>
138
+
139
+ <li><a href="../RConfig/LoadPaths.html">RConfig::LoadPaths</a></li>
140
+
141
+ <li><a href="../RConfig/PropertiesFile.html">RConfig::PropertiesFile</a></li>
142
+
143
+ <li><a href="../RConfig/Reload.html">RConfig::Reload</a></li>
144
+
145
+ <li><a href="../RConfig/Settings.html">RConfig::Settings</a></li>
146
+
147
+ <li><a href="../RConfig/Utils.html">RConfig::Utils</a></li>
148
+
149
+ <li><a href="../Array.html">Array</a></li>
150
+
151
+ <li><a href="../Hash.html">Hash</a></li>
152
+
153
+ <li><a href="../NilClass.html">NilClass</a></li>
154
+
155
+ <li><a href="../String.html">String</a></li>
156
+
157
+ </ul>
158
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
159
+ </div>
160
+
161
+
162
+ </div>
163
+ </div>
164
+
165
+ <div id="documentation">
166
+ <h1 class="module">RConfig::Reload</h1>
167
+
168
+ <div id="description">
169
+
170
+ </div>
171
+
172
+ <!-- Constants -->
173
+
174
+
175
+ <!-- Attributes -->
176
+
177
+
178
+ <!-- Methods -->
179
+
180
+ <div id="public-instance-method-details" class="method-section section">
181
+ <h3 class="section-header">Public Instance Methods</h3>
182
+
183
+
184
+ <div id="auto-check--method" class="method-detail ">
185
+ <a name="method-i-auto_check%3F"></a>
186
+
187
+ <div class="method-heading">
188
+
189
+ <span class="method-name">auto_check?</span><span
190
+ class="method-args">(name)</span>
191
+ <span class="method-click-advice">click to toggle source</span>
192
+
193
+ </div>
194
+
195
+ <div class="method-description">
196
+
197
+
198
+
199
+
200
+
201
+ <div class="method-source-code"
202
+ id="auto-check--source">
203
+ <pre>
204
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 65</span>
205
+ 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">auto_check?</span>(<span class="ruby-identifier">name</span>)
206
+ 66: <span class="ruby-identifier">now</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
207
+ 67: <span class="ruby-keyword kw">if</span> (<span class="ruby-operator">!</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_auto_check</span>[<span class="ruby-identifier">name</span>]) <span class="ruby-operator">||</span> (<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_auto_check</span>[<span class="ruby-identifier">name</span>]) <span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload_interval</span>
208
+ 68: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">last_auto_check</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">now</span>
209
+ 69: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
210
+ 70: <span class="ruby-keyword kw">end</span>
211
+ 71: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
212
+ 72: <span class="ruby-keyword kw">end</span></pre>
213
+ </div>
214
+
215
+ </div>
216
+
217
+
218
+
219
+
220
+ </div>
221
+
222
+
223
+ <div id="enable-reload--method" class="method-detail ">
224
+ <a name="method-i-enable_reload%3D"></a>
225
+
226
+ <div class="method-heading">
227
+
228
+ <span class="method-name">enable_reload=</span><span
229
+ class="method-args">(reload)</span>
230
+ <span class="method-click-advice">click to toggle source</span>
231
+
232
+ </div>
233
+
234
+ <div class="method-description">
235
+
236
+ <p>
237
+ Sets the flag indicating whether or not reload should be executed.
238
+ </p>
239
+
240
+
241
+
242
+ <div class="method-source-code"
243
+ id="enable-reload--source">
244
+ <pre>
245
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 16</span>
246
+ 16: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">enable_reload=</span>(<span class="ruby-identifier">reload</span>)
247
+ 17: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'Argument must be true or false.'</span> <span class="ruby-keyword kw">unless</span> [<span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">reload</span>)
248
+ 18: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span> = <span class="ruby-identifier">reload</span>
249
+ 19: <span class="ruby-keyword kw">end</span></pre>
250
+ </div>
251
+
252
+ </div>
253
+
254
+
255
+
256
+
257
+ </div>
258
+
259
+
260
+ <div id="reload-method" class="method-detail ">
261
+ <a name="method-i-reload"></a>
262
+
263
+ <div class="method-heading">
264
+
265
+ <span class="method-name">reload</span><span
266
+ class="method-args">(force=false)</span>
267
+ <span class="method-click-advice">click to toggle source</span>
268
+
269
+ </div>
270
+
271
+ <div class="method-description">
272
+
273
+ <p>
274
+ Flushes cached config data, so that it can be reloaded from disk. It is
275
+ recommended that this should be used with caution, and any need to reload
276
+ in a production setting should minimized or completely avoided if possible.
277
+ </p>
278
+
279
+
280
+
281
+ <div class="method-source-code"
282
+ id="reload-source">
283
+ <pre>
284
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 36</span>
285
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload</span>(<span class="ruby-identifier">force</span>=<span class="ruby-keyword kw">false</span>)
286
+ 37: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'Argument must be true or false.'</span> <span class="ruby-keyword kw">unless</span> [<span class="ruby-keyword kw">true</span>, <span class="ruby-keyword kw">false</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">force</span>)
287
+ 38: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">force</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">reload?</span>
288
+ 39: <span class="ruby-identifier">flush_cache</span>
289
+ 40: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
290
+ 41: <span class="ruby-keyword kw">end</span>
291
+ 42: <span class="ruby-keyword kw">false</span>
292
+ 43: <span class="ruby-keyword kw">end</span></pre>
293
+ </div>
294
+
295
+ </div>
296
+
297
+
298
+
299
+
300
+ </div>
301
+
302
+
303
+ <div id="reload--method" class="method-detail ">
304
+ <a name="method-i-reload%3F"></a>
305
+
306
+ <div class="method-heading">
307
+
308
+ <span class="method-name">reload?</span><span
309
+ class="method-args">()</span>
310
+ <span class="method-click-advice">click to toggle source</span>
311
+
312
+ </div>
313
+
314
+ <div class="method-description">
315
+
316
+ <p>
317
+ Flag indicating whether or not reload should be executed.
318
+ </p>
319
+
320
+
321
+
322
+ <div class="method-source-code"
323
+ id="reload--source">
324
+ <pre>
325
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 6</span>
326
+ 6: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload?</span>
327
+ 7: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span>
328
+ 8: <span class="ruby-keyword kw">end</span></pre>
329
+ </div>
330
+
331
+ </div>
332
+
333
+
334
+
335
+
336
+ </div>
337
+
338
+
339
+ <div id="reload-disabled--method" class="method-detail ">
340
+ <a name="method-i-reload_disabled%3F"></a>
341
+
342
+ <div class="method-heading">
343
+
344
+ <span class="method-name">reload_disabled?</span><span
345
+ class="method-args">()</span>
346
+ <span class="method-click-advice">click to toggle source</span>
347
+
348
+ </div>
349
+
350
+ <div class="method-description">
351
+
352
+
353
+
354
+
355
+
356
+ <div class="method-source-code"
357
+ id="reload-disabled--source">
358
+ <pre>
359
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 10</span>
360
+ 10: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload_disabled?</span>
361
+ 11: <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">reload?</span>
362
+ 12: <span class="ruby-keyword kw">end</span></pre>
363
+ </div>
364
+
365
+ </div>
366
+
367
+
368
+
369
+
370
+ </div>
371
+
372
+
373
+ <div id="reload-interval--method" class="method-detail ">
374
+ <a name="method-i-reload_interval%3D"></a>
375
+
376
+ <div class="method-heading">
377
+
378
+ <span class="method-name">reload_interval=</span><span
379
+ class="method-args">(interval)</span>
380
+ <span class="method-click-advice">click to toggle source</span>
381
+
382
+ </div>
383
+
384
+ <div class="method-description">
385
+
386
+ <p>
387
+ Sets the number of seconds between reloading of config files and automatic
388
+ reload checks. Defaults to 5 minutes. Setting
389
+ </p>
390
+
391
+
392
+
393
+ <div class="method-source-code"
394
+ id="reload-interval--source">
395
+ <pre>
396
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 25</span>
397
+ 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reload_interval=</span>(<span class="ruby-identifier">interval</span>)
398
+ 26: <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-value str">'Argument must be Integer.'</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Integer</span>)
399
+ 27: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">interval</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-comment cmt"># Sett</span>
400
+ 28: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">reload_interval</span> = <span class="ruby-identifier">interval</span>
401
+ 29: <span class="ruby-keyword kw">end</span></pre>
402
+ </div>
403
+
404
+ </div>
405
+
406
+
407
+
408
+
409
+ </div>
410
+
411
+
412
+ <div id="without-reload-method" class="method-detail ">
413
+ <a name="method-i-without_reload"></a>
414
+
415
+ <div class="method-heading">
416
+
417
+ <span class="method-name">without_reload</span><span
418
+ class="method-args">(&block)</span>
419
+ <span class="method-click-advice">click to toggle source</span>
420
+
421
+ </div>
422
+
423
+ <div class="method-description">
424
+
425
+ <p>
426
+ Executes given block, without reloading any config. Meant to run
427
+ configuration-sensitive code that may otherwise trigger a reload of any/all
428
+ config files. If reload is disabled then it makes no difference if this
429
+ wrapper is used or not. Returns result of the block
430
+ </p>
431
+
432
+
433
+
434
+ <div class="method-source-code"
435
+ id="without-reload-source">
436
+ <pre>
437
+ <span class="ruby-comment cmt"># File lib/rconfig/reload.rb, line 51</span>
438
+ 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">without_reload</span>(&amp;<span class="ruby-identifier">block</span>)
439
+ 52: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">block_given?</span>
440
+ 53: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">nil</span>
441
+ 54: <span class="ruby-identifier">enable_reload_cache</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span>
442
+ 55: <span class="ruby-keyword kw">begin</span>
443
+ 56: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span>
444
+ 57: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">yield</span>
445
+ 58: <span class="ruby-keyword kw">ensure</span>
446
+ 59: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">enable_reload</span> = <span class="ruby-identifier">enable_reload_cache</span>
447
+ 60: <span class="ruby-identifier">check_config_changed</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">reload?</span>
448
+ 61: <span class="ruby-keyword kw">end</span>
449
+ 62: <span class="ruby-identifier">result</span>
450
+ 63: <span class="ruby-keyword kw">end</span></pre>
451
+ </div>
452
+
453
+ </div>
454
+
455
+
456
+
457
+
458
+ </div>
459
+
460
+
461
+ </div>
462
+
463
+
464
+ </div>
465
+
466
+
467
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
468
+
469
+ <p>Disabled; run with --debug to generate this.</p>
470
+
471
+ </div>
472
+
473
+ <div id="validator-badges">
474
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
475
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
476
+ Rdoc Generator</a> 1.1.6</small>.</p>
477
+ </div>
478
+
479
+ </body>
480
+ </html>
481
+