rconfig 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.gitignore +17 -0
  2. data/.rspec +1 -0
  3. data/.rvmrc +1 -0
  4. data/ChangeLog +50 -0
  5. data/Credits +13 -0
  6. data/Gemfile +9 -0
  7. data/Gemfile.lock +30 -0
  8. data/LICENSE.txt +20 -0
  9. data/README.rdoc +0 -0
  10. data/Rakefile +11 -0
  11. data/demo/application.conf +3 -0
  12. data/demo/demo.conf +13 -0
  13. data/demo/demo.rb +14 -0
  14. data/demo/demo.xml +13 -0
  15. data/demo/demo.yml +12 -0
  16. data/doc/classes/ClassVariables.html +111 -0
  17. data/doc/classes/ConfigError.html +120 -0
  18. data/doc/classes/ConfigHash.html +354 -0
  19. data/doc/classes/Constants.html +226 -0
  20. data/doc/classes/Hash.html +269 -0
  21. data/doc/classes/InvalidConfigPathError.html +119 -0
  22. data/doc/classes/Object.html +220 -0
  23. data/doc/classes/PropertiesFileParser.html +282 -0
  24. data/doc/classes/RConfig.html +1745 -0
  25. data/doc/created.rid +1 -0
  26. data/doc/files/README_rdoc.html +271 -0
  27. data/doc/files/lib/rconfig/class_variables_rb.html +107 -0
  28. data/doc/files/lib/rconfig/config_hash_rb.html +114 -0
  29. data/doc/files/lib/rconfig/constants_rb.html +101 -0
  30. data/doc/files/lib/rconfig/core_ext/hash_rb.html +114 -0
  31. data/doc/files/lib/rconfig/core_ext/object_rb.html +101 -0
  32. data/doc/files/lib/rconfig/core_ext_rb.html +114 -0
  33. data/doc/files/lib/rconfig/exceptions_rb.html +110 -0
  34. data/doc/files/lib/rconfig/properties_file_parser_rb.html +146 -0
  35. data/doc/files/lib/rconfig/rconfig_rb.html +186 -0
  36. data/doc/files/lib/rconfig_rb.html +117 -0
  37. data/doc/fr_class_index.html +35 -0
  38. data/doc/fr_file_index.html +37 -0
  39. data/doc/fr_method_index.html +75 -0
  40. data/doc/index.html +24 -0
  41. data/doc/rdoc-style.css +208 -0
  42. data/lib/generators/rconfig/install_generator.rb +13 -0
  43. data/lib/generators/rconfig/templates/rconfig.rb +82 -0
  44. data/lib/rconfig.rb +98 -32
  45. data/lib/rconfig/callbacks.rb +46 -0
  46. data/lib/rconfig/cascade.rb +56 -0
  47. data/lib/rconfig/config.rb +78 -0
  48. data/lib/rconfig/constants.rb +58 -0
  49. data/lib/rconfig/core_ext/array.rb +3 -0
  50. data/lib/rconfig/core_ext/hash.rb +56 -57
  51. data/lib/rconfig/core_ext/nil.rb +5 -0
  52. data/lib/rconfig/core_ext/string.rb +3 -0
  53. data/lib/rconfig/core_methods.rb +276 -0
  54. data/lib/rconfig/exceptions.rb +21 -8
  55. data/lib/rconfig/load_paths.rb +55 -0
  56. data/lib/rconfig/logger.rb +86 -0
  57. data/lib/rconfig/properties_file.rb +138 -0
  58. data/lib/rconfig/reload.rb +75 -0
  59. data/lib/rconfig/settings.rb +93 -0
  60. data/lib/rconfig/utils.rb +175 -0
  61. data/lib/tasks/gem.rake +14 -0
  62. data/lib/tasks/rdoc.rake +11 -0
  63. data/lib/tasks/spec.rake +25 -0
  64. data/rconfig.gemspec +33 -0
  65. data/spec/core_ext/object_spec.rb +44 -0
  66. data/spec/rconfig_spec.rb +7 -0
  67. data/spec/spec.opts +4 -0
  68. data/spec/spec_helper.rb +16 -0
  69. metadata +128 -32
  70. data/lib/rconfig/config_hash.rb +0 -105
  71. data/lib/rconfig/core_ext.rb +0 -6
  72. data/lib/rconfig/properties_file_parser.rb +0 -80
  73. data/lib/rconfig/rconfig.rb +0 -871
  74. data/test/rconfig_test.rb +0 -381
@@ -0,0 +1,146 @@
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: properties_file_parser.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>properties_file_parser.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/rconfig/properties_file_parser.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Fri Feb 12 16:23:34 -0600 2010</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ Copyright (c) 2009 Rahmal Conda &lt;rahmal@gmail.com&gt;
74
+ </p>
75
+ <p>
76
+ This class parses key/value based properties files used for configuration.
77
+ It is used by rconfig to import configuration files of the aforementioned
78
+ format. Unlike yaml, and xml files it can only support three levels. First,
79
+ it can have root level properties:
80
+ </p>
81
+ <pre>
82
+ server_url=host.domain.com
83
+ server_port=8080
84
+ </pre>
85
+ <p>
86
+ Secondly, it can have properties grouped into catagories. The group names
87
+ must be specified within brackets like [ &#8230; ]
88
+ </p>
89
+ <pre>
90
+ [server]
91
+ url=host.domain.com
92
+ port=8080
93
+ </pre>
94
+ <p>
95
+ Finally, groups can also be qualified with namespaces, similar to git
96
+ config files. Group names are same as before, but with namespace in within
97
+ the brackets like [ &lt;group&gt; &quot;&lt;name&gt;&quot; ]
98
+ </p>
99
+ <pre>
100
+ [host &quot;dev&quot;]
101
+ domain=dev.server.com
102
+
103
+ [host &quot;prod&quot;]
104
+ domain=www.server.com
105
+ </pre>
106
+ <p>
107
+ These can be retrieved using dot-notation or variable to do it dynamically.
108
+ </p>
109
+ <pre>
110
+ RConfig.props.host.dev.domain
111
+ - or -
112
+ RConfig.props.host[env].domain (where env is 'dev' or 'prod')
113
+ </pre>
114
+
115
+ </div>
116
+
117
+
118
+ </div>
119
+
120
+
121
+ </div>
122
+
123
+
124
+ <!-- if includes -->
125
+
126
+ <div id="section">
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+ <!-- if method_list -->
136
+
137
+
138
+ </div>
139
+
140
+
141
+ <div id="validator-badges">
142
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
143
+ </div>
144
+
145
+ </body>
146
+ </html>
@@ -0,0 +1,186 @@
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: rconfig.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>rconfig.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/rconfig/rconfig.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Wed Jan 06 17:58:24 -0600 2010</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ Copyright (c) 2009 Rahmal Conda &lt;rahmal@gmail.com&gt;
74
+ </p>
75
+ <hr size="10"></hr><p>
76
+ The complete solution for Ruby Configuration Management. <a
77
+ href="../../../classes/RConfig.html">RConfig</a> is a Ruby library that
78
+ manages configuration within Ruby applications. It bridges the gap between
79
+ yaml, xml, and key/value based properties files, by providing a centralized
80
+ solution to handle application configuration from one location. It provides
81
+ the simplicity of hash-based access, that Rubyists have come to know and
82
+ love, supporting your configuration style of choice, while providing many
83
+ new features, and an elegant API.
84
+ </p>
85
+ <hr size="10"></hr><ul>
86
+ <li>Simple, easy to install and use.
87
+
88
+ </li>
89
+ <li>Supports yaml, xml, and properties files.
90
+
91
+ </li>
92
+ <li>Yaml and xml files supprt infinite level of configuration grouping.
93
+
94
+ </li>
95
+ <li>Intuitive dot-notation &#8216;key chaining&#8217; argument access.
96
+
97
+ </li>
98
+ <li>Simple well-known hash/array based argument access.
99
+
100
+ </li>
101
+ <li>Implements multilevel caching to reduce disk access.
102
+
103
+ </li>
104
+ <li>Short-hand access to &#8216;global&#8217; application configuration, and
105
+ shell environment.
106
+
107
+ </li>
108
+ <li>Overlays multiple configuration files to support environment, host, and
109
+ even locale-specific configuration.
110
+
111
+ </li>
112
+ </ul>
113
+ <hr size="10"></hr><pre>
114
+ The overlay order of the config files is defined by SUFFIXES:
115
+ * nil
116
+ * _local
117
+ * _config
118
+ * _local_config
119
+ * _{environment} (.i.e _development)
120
+ * _{environment}_local (.i.e _development_local)
121
+ * _{hostname} (.i.e _whiskey)
122
+ * _{hostname}_config_local (.i.e _whiskey_config_local)
123
+ </pre>
124
+ <hr size="10"></hr><p>
125
+ Example:
126
+ </p>
127
+ <pre>
128
+ shell/console =&gt;
129
+ export LANG=en
130
+
131
+ demo.yml =&gt;
132
+ server:
133
+ address: host.domain.com
134
+ port: 81
135
+ ...
136
+
137
+ application.properties =&gt;
138
+ debug_level = verbose
139
+ ...
140
+ </pre>
141
+ <p>
142
+ demo.rb =&gt;
143
+ </p>
144
+ <pre>
145
+ require 'rconfig'
146
+ RConfig.config_paths = ['$HOME/config', '#{APP_ROOT}/config', '/demo/conf']
147
+ RConfig.demo[:server][:port] =&gt; 81
148
+ RConfig.demo.server.address =&gt; 'host.domain.com'
149
+
150
+ RConfig[:debug_level] =&gt; 'verbose'
151
+ RConfig[:lang] =&gt; 'en'
152
+ ...
153
+ </pre>
154
+
155
+ </div>
156
+
157
+
158
+ </div>
159
+
160
+
161
+ </div>
162
+
163
+
164
+ <!-- if includes -->
165
+
166
+ <div id="section">
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+ <!-- if method_list -->
176
+
177
+
178
+ </div>
179
+
180
+
181
+ <div id="validator-badges">
182
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
183
+ </div>
184
+
185
+ </body>
186
+ </html>
@@ -0,0 +1,117 @@
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: rconfig.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>rconfig.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/rconfig.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Fri Feb 05 16:15:47 -0600 2010</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
+ <div id="requires-list">
73
+ <h3 class="section-bar">Required files</h3>
74
+
75
+ <div class="name-list">
76
+ rubygems&nbsp;&nbsp;
77
+ active_support&nbsp;&nbsp;
78
+ rconfig/core_ext/object&nbsp;&nbsp;
79
+ rconfig/core_ext/hash&nbsp;&nbsp;
80
+ rconfig/config_hash&nbsp;&nbsp;
81
+ rconfig/properties_file_parser&nbsp;&nbsp;
82
+ rconfig/exceptions&nbsp;&nbsp;
83
+ rconfig/constants&nbsp;&nbsp;
84
+ rconfig/class_variables&nbsp;&nbsp;
85
+ rconfig/rconfig&nbsp;&nbsp;
86
+ </div>
87
+ </div>
88
+
89
+ </div>
90
+
91
+
92
+ </div>
93
+
94
+
95
+ <!-- if includes -->
96
+
97
+ <div id="section">
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+ <!-- if method_list -->
107
+
108
+
109
+ </div>
110
+
111
+
112
+ <div id="validator-badges">
113
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
114
+ </div>
115
+
116
+ </body>
117
+ </html>