globals 0.1.2 → 0.1.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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/globals.rb +30 -6
  3. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc10e1c3cc9df63d43274c1ac740a0069198e72f
4
- data.tar.gz: 6958d209f44226436fb00cd859b7e98fb4b15657
3
+ metadata.gz: 7542984347db703149f4405cb03327ad4887eb3d
4
+ data.tar.gz: e9c740c9a8b129c56f41a091b10dc67e0a78a2f6
5
5
  SHA512:
6
- metadata.gz: f724ecee9a67fc8a61a219313a769a2a5e2b164e4c87a6d60c14a97721da123816c0f4a149bf844758599c13ec4a166438226dbf620413fe972a66eff09af649
7
- data.tar.gz: 19eefdcc9ee5c6872f7097df5c6138f11f895654a3046228cb6cce64d62a2a3e666b5a21d613f8b0df1a419b557b60ea0811164ffd20b4cd9b0213977ff1117d
6
+ metadata.gz: 53299d7c08715a7e8f8dafff7af306855ae83a1ffd4165c9f21893576f915e20585e4535317128eb879a7b862d1f0635e0c5e1a8c0de67983097836d3e364e16
7
+ data.tar.gz: 4c24aca1a3898e0248f4fc4aecb6c27541dfc2839b537185a81ceffafc932cc5597478bf3d1bc1d30f75004d0ea777674ff827ceebb584515ae66f5fa3fac3cf
@@ -1,13 +1,33 @@
1
1
  require 'erb'
2
2
  require 'yaml'
3
3
 
4
+ class Hash
5
+ def recursive_merge!(that)
6
+ that.each_pair do |k, v|
7
+ if v.is_a? Hash
8
+ self[k] ||= {}
9
+ self[k].recursive_merge!(v)
10
+ else
11
+ self[k] = v
12
+ end
13
+ end
14
+ end
15
+ end
16
+
4
17
  class Globals
18
+ def self.load(globals_file, env)
19
+ yaml = YAML.load ERB.new(File.read globals_file).result
20
+ globals = yaml['defaults'] || {}
21
+ globals.recursive_merge!(yaml[env] || {})
22
+ globals
23
+ end
24
+
5
25
  def self.read(globals_file, env='development')
6
26
  raise "#{globals_file} does not exist." unless File.exists? globals_file
7
27
 
8
- env = env.to_s
9
- yaml = YAML.load ERB.new(File.read globals_file).result
10
- new(yaml[env] || {}, env)
28
+ globals = load(globals_file, env)
29
+
30
+ new(globals, env)
11
31
  end
12
32
 
13
33
  def initialize(globals, env)
@@ -25,12 +45,16 @@ class Globals
25
45
  end
26
46
 
27
47
  def override(override_file_path)
28
- overrides = YAML.load(ERB.new(File.read(override_file_path)).result)[@environment]
48
+ puts "Override file is " + override_file_path
49
+ overrides = self.class.load(override_file_path, @environment)
50
+
29
51
  if overrides
30
52
  @cache.clear
31
- recursive_merge @globals, overrides
53
+ @globals.recursive_merge! overrides
32
54
  define_accessors
33
55
  end
56
+
57
+ self
34
58
  end
35
59
 
36
60
  def to_hash
@@ -52,7 +76,7 @@ class Globals
52
76
  end
53
77
  end
54
78
 
55
- def recursive_merge(a, b)
79
+ def self.recursive_merge(a, b)
56
80
  b.each_pair do |k, v|
57
81
  if v.is_a? Hash
58
82
  a[k] ||= {}
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: globals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sujoy Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-11-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description:
13
+ description: A simple way to define globals for use in a rails application.
14
14
  email: sujoyg@gmail.com
15
15
  executables: []
16
16
  extensions: []
@@ -18,7 +18,8 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/globals.rb
20
20
  homepage: http://rubygems.org/gems/globals
21
- licenses: []
21
+ licenses:
22
+ - MIT
22
23
  metadata: {}
23
24
  post_install_message:
24
25
  rdoc_options: []