hashr 0.0.3 → 0.0.4

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hashr (0.0.2)
4
+ hashr (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,12 +1,22 @@
1
1
  class Hashr < Hash
2
2
  module EnvDefaults
3
+ attr_writer :env_namespace
4
+
5
+ def env_namespace=(env_namespace)
6
+ @env_namespace = [env_namespace.upcase]
7
+ end
8
+
9
+ def env_namespace
10
+ @env_namespace ||= []
11
+ end
12
+
3
13
  def definition
4
14
  deep_enverize(super)
5
15
  end
6
16
 
7
17
  protected
8
18
 
9
- def deep_enverize(hash, nesting = ['WORKER'])
19
+ def deep_enverize(hash, nesting = env_namespace)
10
20
  hash.each do |key, value|
11
21
  nesting << key.to_s.upcase
12
22
  hash[key] = case value
data/lib/hashr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hashr < Hash
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/test/hashr_test.rb CHANGED
@@ -36,16 +36,35 @@ class HashrTest < Test::Unit::TestCase
36
36
  end
37
37
 
38
38
  test 'defining defaults' do
39
- klass = Class.new(Hashr)
40
- klass.define(:foo => 'foo', :bar => { :baz => 'baz' })
39
+ klass = Class.new(Hashr) do
40
+ define :foo => 'foo', :bar => { :baz => 'baz' }
41
+ end
41
42
  assert_equal 'foo', klass.new.foo
42
43
  assert_equal 'baz', klass.new.bar.baz
43
44
  end
44
45
 
46
+ test 'defining different defaults on different classes ' do
47
+ foo = Class.new(Hashr) { define :foo => 'foo' }
48
+ bar = Class.new(Hashr) { define :bar => 'bar' }
49
+
50
+ assert_equal 'foo', foo.definition[:foo]
51
+ assert_equal 'bar', bar.definition[:bar]
52
+ end
53
+
54
+ test 'defining different env_namespaces on different classes ' do
55
+ foo = Class.new(Hashr) {extend Hashr::EnvDefaults; self.env_namespace = 'foo' }
56
+ bar = Class.new(Hashr) {extend Hashr::EnvDefaults; self.env_namespace = 'bar' }
57
+
58
+ assert_equal ['FOO'], foo.env_namespace
59
+ assert_equal ['BAR'], bar.env_namespace
60
+ end
61
+
45
62
  test 'defaults to env vars' do
46
- klass = Class.new(Hashr)
47
- klass.extend Hashr::EnvDefaults
48
- klass.define(:foo => 'foo', :bar => { :baz => 'baz' })
63
+ klass = Class.new(Hashr) do
64
+ extend Hashr::EnvDefaults
65
+ self.env_namespace = 'worker'
66
+ define :foo => 'foo', :bar => { :baz => 'baz' }
67
+ end
49
68
 
50
69
  ENV['WORKER_FOO'] = 'env foo'
51
70
  ENV['WORKER_BAR_BAZ'] = 'env bar baz'
@@ -55,8 +74,9 @@ class HashrTest < Test::Unit::TestCase
55
74
  end
56
75
 
57
76
  test 'a key :_include includes the given modules' do
58
- klass = Class.new(Hashr)
59
- klass.define(:foo => { :_include => Module.new { def helper; 'helper'; end } })
77
+ klass = Class.new(Hashr) do
78
+ define :foo => { :_include => Module.new { def helper; 'helper'; end } }
79
+ end
60
80
  assert_equal 'helper', klass.new.foo.helper
61
81
  end
62
82
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashr
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs