confuse 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,8 +12,17 @@ module Confuse
12
12
  include ConfigMixin
13
13
  extend DSL
14
14
 
15
- def initialize(*paths)
16
- load_namespaces(self.class.namespaces)
15
+ def namespaces
16
+ @namespaces ||= {}
17
+ end
18
+
19
+ def initialize(options = {})
20
+ load_namespaces(self.class.namespaces.clone)
21
+ paths = options[:paths] || []
22
+ load_defaults = begin
23
+ d = options[:load_defaults]
24
+ d.nil? ? true : d
25
+ end
17
26
  if paths.flatten.empty?
18
27
  read_files(self.class.config_path.flatten)
19
28
  else
@@ -25,6 +25,10 @@ module Confuse
25
25
  @default_value = block unless block.nil?
26
26
  end
27
27
 
28
+ def value=(val)
29
+ @value = val
30
+ end
31
+
28
32
  def value
29
33
  @value || @default_value
30
34
  end
@@ -12,8 +12,9 @@ module Confuse
12
12
  def load_namespaces(new_namespaces)
13
13
  new_namespaces.each do |key, value|
14
14
  existing = namespaces[key]
15
- existing ? existing.merge!(value) : namespaces[key] = value
15
+ existing ? existing.merge!(value) : namespaces[key] = value.clone
16
16
  end
17
+ @foo = true
17
18
  end
18
19
 
19
20
  def read_files(file_paths)
@@ -35,6 +36,7 @@ module Confuse
35
36
  end
36
37
 
37
38
  def []=(key, value)
39
+ puts "WARNING: changing config after it has been set!"
38
40
  mixin_config!({key => value})
39
41
  end
40
42
 
@@ -9,8 +9,8 @@ module Confuse
9
9
 
10
10
  def initialize(&block)
11
11
  @items = {}
12
- @supress_warnings = false
13
- @strict = false
12
+ @supress_warnings_flag = false
13
+ @strict_flag = false
14
14
  instance_eval(&block)
15
15
  end
16
16
 
@@ -58,7 +58,17 @@ module Confuse
58
58
  def merge!(namespace)
59
59
  @strict_flag = namespace.strict
60
60
  @supress_warnings_flag = namespace.supress_warnings
61
- @items.merge! namespace.items
61
+ @items.merge! namespace.clone.items
62
+ end
63
+
64
+ def clone
65
+ c = super
66
+ items = @items.reduce({}) do |m, (k, v)|
67
+ m[k] = v.clone
68
+ m
69
+ end
70
+ c.instance_variable_set(:"@items", items)
71
+ c
62
72
  end
63
73
 
64
74
  end
@@ -1,3 +1,3 @@
1
1
  module Confuse
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -0,0 +1,24 @@
1
+ require 'minitest/autorun'
2
+ require 'confuse'
3
+
4
+ class Foo < Confuse::ConfigBase
5
+ define :foo do
6
+ default 'foo'
7
+ end
8
+ end
9
+
10
+ class TestConfigBase < MiniTest::Unit::TestCase
11
+ def test_two_instances_can_exist_with_different_values
12
+ # instatiate two versions of the config
13
+ config1 = Foo.new
14
+ config2 = Foo.new
15
+
16
+ # change the values of one of them
17
+ config1[:foo] = 'bar'
18
+
19
+ # assert only one has changed
20
+ assert_equal 'bar', config1[:foo]
21
+ assert_equal 'foo', config2[:foo]
22
+ end
23
+ end
24
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confuse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tom Chipchase
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-10-09 00:00:00 Z
18
+ date: 2013-10-14 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: inifile
@@ -92,6 +92,7 @@ files:
92
92
  - lib/confuse/namespace.rb
93
93
  - lib/confuse/version.rb
94
94
  - test/test_config.rb
95
+ - test/test_config_base.rb
95
96
  - test/test_namespace.rb
96
97
  homepage: https://github.com/mediasp/confuse
97
98
  licenses:
@@ -128,5 +129,6 @@ specification_version: 3
128
129
  summary: A DSL for defining configuration options in classes
129
130
  test_files:
130
131
  - test/test_config.rb
132
+ - test/test_config_base.rb
131
133
  - test/test_namespace.rb
132
134
  has_rdoc: