globals 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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: []