rconfig 0.3.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.iws
2
+ *.ipr
3
+ *.iml
4
+ *.tmproj
5
+ *.log
6
+ *.swp
7
+ *.*~
8
+ *~
9
+ .bundle
10
+ .directory
11
+ .document
12
+ .idea
13
+ .project
14
+ .DS_Store
15
+ .rakeTasks
16
+ log
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color --format progress --backtrace
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@rconfig
data/ChangeLog ADDED
@@ -0,0 +1,50 @@
1
+ 0.4.0
2
+ =====
3
+ * Broke RConfig core into separate modules to decrease core class size.
4
+ * Added Rails generator to override RConfig settings in Rails projects
5
+ * Added support for git-like config files, giving key/value properties files potentially three levels.
6
+ * Added support for values referencing other properties in key-value config files
7
+ * Refactored settings module to allow for clean defaults, and overriding.
8
+ * Added RConfig logger.
9
+ * Renamed overlay to cascade
10
+ * Fixed a syntax error in when clause of config_hash.rb for ruby 1.9.1 - From dvyjones/rconfig (github).
11
+ * Fixed raise on allow_reload method.
12
+ * Fixed unit test, rconfig_test.rb.
13
+ * Fixed minor typos, comments, and bugs.
14
+ * Refactored Hash#weave signature; changed dont_clobber=true, to clobber=false (reads more intuitively).
15
+ * Removed redundant validate method from PropertiesFileParser.
16
+ * Renamed PropertiesFileParser to PropertiesFile
17
+
18
+ 0.3.3
19
+ =====
20
+ * Fixed overlay class variable not loaded warning.
21
+
22
+ 0.3.2
23
+ =====
24
+ * Fixed bug in 0.3.1 causing stackrace
25
+
26
+ 0.3.1 (bug - DO NOT USE)
27
+ =====
28
+ * Added rake scripts
29
+ * Finished gemspec
30
+ * Created rdocs
31
+ * Built gem file
32
+
33
+ 0.3
34
+ =====
35
+ * Re-factored rconfig core.
36
+ * Added new helper method to init rconfig.
37
+ * Re-factored core_ext/hash.
38
+ * Added custom exceptions.
39
+ * Added global instance $config, for convenience.
40
+ * Updated comments.
41
+
42
+ 0.2
43
+ =====
44
+ * Added support for setting config path(s) programmtically.
45
+ * Added support for using multiple file types at once.
46
+ * Cleaned up STDERR statements.
47
+
48
+ 0.1
49
+ =====
50
+ * First public release
data/Credits ADDED
@@ -0,0 +1,13 @@
1
+ Thanks to everyone I included here. RConfig would not exist without their contributions.
2
+
3
+ Mike Sandler, Kurt Stephens, CashNetUSA (CNU):
4
+ - The core of logic of RConfig is based on a stand-alone class called CnuConfig, that resided in the CNU codebase.
5
+ - It was originally created by Mike Sandler as a config solution for CNU's internal web apps.
6
+ - It only supported yaml files, but it boasted overlay support to unobstrusively load environment specific configs,
7
+ and a dottable notation not seen in any other ruby config libraries.
8
+ - It was later enhanced by Kurt Stephens to support indifferent access, reload support, and callbacks, making it
9
+ a enterprise worthy config solution.
10
+ - I have made some signifcant enhancements to RConfig since that original debut, to make it a truly complete
11
+ configuration solution, all of which are in this gem.
12
+ - The original CnuConfig, that RConfig was forked from was open-sourced by CNU as ActiveConfig. It can be found on
13
+ GitHub for anyone interested.
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'activesupport', '~> 3.0', :require => 'active_support'
4
+
5
+ group :development do
6
+ gem 'rspec', '~> 2.3.0'
7
+ gem 'bundler', '~> 1.0.0'
8
+ gem 'jeweler', '~> 1.6.4'
9
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,30 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ activesupport (3.1.1)
5
+ multi_json (~> 1.0)
6
+ diff-lcs (1.1.3)
7
+ git (1.2.5)
8
+ jeweler (1.6.4)
9
+ bundler (~> 1.0)
10
+ git (>= 1.2.5)
11
+ rake
12
+ multi_json (1.1.0)
13
+ rake (0.9.2.2)
14
+ rspec (2.3.0)
15
+ rspec-core (~> 2.3.0)
16
+ rspec-expectations (~> 2.3.0)
17
+ rspec-mocks (~> 2.3.0)
18
+ rspec-core (2.3.1)
19
+ rspec-expectations (2.3.0)
20
+ diff-lcs (~> 1.1.2)
21
+ rspec-mocks (2.3.0)
22
+
23
+ PLATFORMS
24
+ ruby
25
+
26
+ DEPENDENCIES
27
+ activesupport (~> 3.0)
28
+ bundler (~> 1.0.0)
29
+ jeweler (~> 1.6.4)
30
+ rspec (~> 2.3.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Rahmal Conda
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
File without changes
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'rake/testtask'
6
+ require 'rake/rdoctask'
7
+ require 'lib/rconfig'
8
+
9
+
10
+ Dir['tasks/**/*.rake'].sort.each { |lib| load lib }
11
+
@@ -0,0 +1,3 @@
1
+ test=true
2
+
3
+ memory_limit=512
data/demo/demo.conf ADDED
@@ -0,0 +1,13 @@
1
+ admin_email = root@localhost
2
+ listen_ip = 127.0.0.1
3
+ listen_port = 87345
4
+ file_type: conf
5
+ only_conf: true
6
+
7
+ [group1]
8
+ user_name = johnny
9
+ group_name = daemons
10
+
11
+ [group2]
12
+ user_name = rita
13
+ group_name = daemons
data/demo/demo.rb ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__),"..","lib")
4
+
5
+ require 'rconfig'
6
+
7
+ dir = File.dirname(__FILE__)
8
+
9
+ puts "Current Dir: " + dir
10
+ puts "RConfig.add_config_path File.dirname(__FILE__) => #{RConfig.add_config_path(dir)}"
11
+ puts "RConfig.demo[:admin_email] => #{RConfig.demo[:admin_email]}" #=> 'root@localhost'
12
+ puts "RConfig.demo.listen_ip => #{RConfig.demo.listen_ip}" #=> '127.0.0.1'
13
+ puts "RConfig.demo[:group1][:group_name] => #{RConfig.demo[:group1][:group_name]}" #=> 'daemons'
14
+ puts "RConfig.demo.group2.user_name => #{RConfig.demo.group2.user_name}" #=> 'rita'
data/demo/demo.xml ADDED
@@ -0,0 +1,13 @@
1
+ <demo>
2
+ <admin_email>root@localhost</admin_email>
3
+ <listen_ip>127.0.0.1</listen_ip>
4
+ <listen_port>87345</listen_port>
5
+ <group1>
6
+ <user_name>johnny</user_name>
7
+ <group_name>daemons</group_name>
8
+ </group1>
9
+ <group2>
10
+ <user_name>rita</user_name>
11
+ <group_name>daemons</group_name>
12
+ </group2>
13
+ </demo>
data/demo/demo.yml ADDED
@@ -0,0 +1,12 @@
1
+ admin_email: root@localhost
2
+ listen_ip: 127.0.0.1
3
+ listen_port: 87345
4
+ file_type: yml
5
+
6
+ group1:
7
+ user_name: johnny
8
+ group_name: daemons
9
+
10
+ group2:
11
+ user_name: rita
12
+ group_name: daemons
@@ -0,0 +1,111 @@
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>Module: ClassVariables</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>Module</strong></td>
53
+ <td class="class-name-in-header">ClassVariables</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/rconfig/class_variables_rb.html">
59
+ lib/rconfig/class_variables.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+ <div id="description">
76
+ <p>
77
+ These are all the variables used to store RConfigs state.
78
+ </p>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+
86
+ </div>
87
+
88
+
89
+ <!-- if includes -->
90
+
91
+ <div id="section">
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ <!-- if method_list -->
101
+
102
+
103
+ </div>
104
+
105
+
106
+ <div id="validator-badges">
107
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
108
+ </div>
109
+
110
+ </body>
111
+ </html>
@@ -0,0 +1,120 @@
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: ConfigError</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">ConfigError</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/rconfig/exceptions_rb.html">
59
+ lib/rconfig/exceptions.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
+ StandardError
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ Copyright (c) 2009 Rahmal Conda &lt;rahmal@gmail.com&gt;
84
+ </p>
85
+ <p>
86
+ <a href="RConfig.html">RConfig</a> Exceptions
87
+ </p>
88
+
89
+ </div>
90
+
91
+
92
+ </div>
93
+
94
+
95
+ </div>
96
+
97
+
98
+ <!-- if includes -->
99
+
100
+ <div id="section">
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+ <!-- if method_list -->
110
+
111
+
112
+ </div>
113
+
114
+
115
+ <div id="validator-badges">
116
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
117
+ </div>
118
+
119
+ </body>
120
+ </html>