easyconf-rails 0.0.2 → 0.0.3

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 (4) hide show
  1. data/lib/easyconf-rails.rb +39 -3
  2. data.tar.gz.sig +2 -5
  3. metadata +4 -4
  4. metadata.gz.sig +0 -0
@@ -12,12 +12,48 @@ class EasyConfRails < Rails::Railtie
12
12
  hash.is_a?(Array) ? hash : OpenStruct.new(hash)
13
13
  end
14
14
 
15
- # Load the configuration file at the root of our Rails directory.
15
+ # Merge two hashes recursively, with precedence going to the earliest Hash
16
+ # with that value defined. For example,
17
+ # merge_hashes( {a: {b: 1}, c: 2}, {a: {d: 3}, c: {e: 4}} )
18
+ # will return
19
+ # {a: {b: 1, d: 3}, c: 2}
20
+ def merge_hashes(*hashes)
21
+ merged = {}
22
+
23
+ hashes.each do |hash|
24
+ hash.each do |key, val|
25
+ if merged.has_key?(key) and merged[key].is_a?(Hash) and val.is_a?(Hash)
26
+ merged[key] = merge_hashes(merged[key], val)
27
+ elsif not merged.has_key?(key)
28
+ merged[key] = val
29
+ else
30
+ # merged[key] and val are not both Hashes, and therefore can't be
31
+ # merged. merged[key] takes precedence over val, and we do nothing.
32
+ end
33
+ end
34
+ end
35
+
36
+ merged
37
+ end
38
+
39
+ # Load the configuration file at Rails.root/config.yml and the defaults file
40
+ # at Rails.root/config/defaults.yml.
16
41
  def load_config()
17
42
  config_location = Rails.root + 'config.yml'
18
- hash = YAML.load_file(config_location)
43
+ if File.exists?(config_location)
44
+ config_hash = YAML.load_file(config_location)
45
+ else
46
+ config_hash = {}
47
+ end
48
+
49
+ defaults_location = Rails.root + 'config' + 'defaults.yml'
50
+ if File.exists?(defaults_location)
51
+ defaults_hash = YAML.load_file(defaults_location)
52
+ else
53
+ defaults_hash = {}
54
+ end
19
55
 
20
- hash_to_openstruct(hash)
56
+ hash_to_openstruct(merge_hashes(config_hash, defaults_hash))
21
57
  end
22
58
 
23
59
  config.before_initialize do
data.tar.gz.sig CHANGED
@@ -1,5 +1,2 @@
1
-
2
- <��m[G=����ӯ�>���Y�%sx uv��+�"v�t��U�a�6�:Vs���pR�<T4!�q;�d5���R�-H��`��l�1��cv����EB*r��>ۆGU�]�RL�w�R�U9���BՓ1� UKڊh��!Җ�f,bFJ9 ��:���j�^�lm5�b��]�%-��/VU�$|��
3
- �.��
4
- -�`11{��{��َ��
5
- �S���Ϛ��;�Q!�Efq)�0�8�̖�}�
1
+ �W}��ǝ�G��h��XS��S�:���[e��|z ���2~?�P8��x����k&s�D��˚�F����:�a_��e�c�N�UF�B�2�㏳Ӆ��
2
+ �!��3���}|\'Ԑ>�R�ȟ���Z��]G������>:�R�Ja ����L6>�6IyDg����Y 4��h3J0rMê�i3���̌6��·�s���;��M��gK(7+dF��#�A��~����a���g6��kd�] +��
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easyconf-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -50,11 +50,11 @@ cert_chain:
50
50
  -----END CERTIFICATE-----
51
51
 
52
52
  '
53
- date: 2011-12-02 00:00:00.000000000 Z
53
+ date: 2011-12-07 00:00:00.000000000 Z
54
54
  dependencies:
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rails
57
- requirement: &72611620 !ruby/object:Gem::Requirement
57
+ requirement: &73151190 !ruby/object:Gem::Requirement
58
58
  none: false
59
59
  requirements:
60
60
  - - ! '>='
@@ -62,7 +62,7 @@ dependencies:
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
- version_requirements: *72611620
65
+ version_requirements: *73151190
66
66
  description: Configure Rails apps with a simple YAML file.
67
67
  email: the.magical.kat@gmail.com
68
68
  executables: []
metadata.gz.sig CHANGED
Binary file