hashr 0.0.3 → 0.0.4

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