mooconfig 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.
data/README.md CHANGED
@@ -24,6 +24,20 @@ gem install mooconfig
24
24
  ###Get configuration
25
25
  puts "production configuration: #{mconf.get( "production" )['a']} \n default configuration: #{mconf.get['a']}"
26
26
 
27
+
28
+ ###Observers
29
+ Register observers -- get notifications whenever set!(..) is performed
30
+
31
+ class MyConfigObserver
32
+ def initialize(conf)
33
+ conf.add_observer self # attach observer to the configuration
34
+ end
35
+
36
+ def update( c_id, c_data )
37
+ # .. get an update -- configuration id, and configuration data
38
+ end
39
+ end
40
+
27
41
  ##Test
28
42
  via guard and guardminitest
29
43
  see test folder
@@ -1,9 +1,13 @@
1
1
  require 'mongo'
2
+ require 'observer'
2
3
 
3
4
  module MooConfig
4
5
 
5
6
  class Config
7
+ include Observable
8
+
6
9
  DEFAULT_CONFIG_ID = 'default'
10
+
7
11
  def initialize( host, port, db, conf_collection='config' )
8
12
  @cCollection = Mongo::Connection.new( host, port ).db( db ).collection( conf_collection )
9
13
  rescue => err
@@ -16,8 +20,11 @@ module MooConfig
16
20
  end
17
21
 
18
22
  def set!( config, config_id = DEFAULT_CONFIG_ID )
23
+ changed
19
24
  @cCollection.update( {'_id'=>config_id }, {'_id'=>config_id, 'c' => config }, { :upsert => true } )
25
+ notify_observers( config_id , get( config_id ) )
20
26
  end
27
+
21
28
  end
22
29
 
23
30
  end
@@ -1,3 +1,3 @@
1
1
  module MooConfig
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -12,9 +12,12 @@ class MatchTest < MiniTest::Unit::TestCase
12
12
 
13
13
  def setup
14
14
  c = Mongo::Connection.new( HOST, PORT ).db( DB ).collection( 'config' )
15
- c.update( { '_id' => 'default' }, { '_id' => 'default', 'c' => FIXED }, { :upsert => true } )
15
+ c.update( { '_id' => 'default' }, { '_id' => 'default', 'c' => FIXED }, { :upsert => true } )
16
16
  end
17
17
 
18
+ def teardown
19
+ Mongo::Connection.new( HOST, PORT ).db( DB ).collection( 'config' ).remove( {'_id' => 'foo'})
20
+ end
18
21
 
19
22
  def test_get
20
23
  confie = MooConfig::Config.new( HOST, PORT, DB ).get
@@ -33,8 +36,26 @@ class MatchTest < MiniTest::Unit::TestCase
33
36
  confie.set!( confie.get, 'foo' )
34
37
 
35
38
  assert( confie.get( 'foo') == confie.get, "Failed in test_no_default either get or set!")
36
-
37
- Mongo::Connection.new( HOST, PORT ).db( DB ).collection( 'config' ).remove( {'_id' => 'foo'})
38
39
  end
39
-
40
+
41
+ def test_observer
42
+ confie = MooConfig::Config.new( HOST, PORT, DB )
43
+ obsr = TObserve::new confie
44
+ confie.set!( confie.get, 'foo' )
45
+ assert( obsr.touched && obsr.seen_id=='foo', "observer was not notified" )
46
+ end
47
+
48
+ class TObserve
49
+ attr :touched, false
50
+ attr :seen_id, "_"
51
+
52
+ def initialize(conf)
53
+ conf.add_observer self
54
+ end
55
+ def update( c_id, c_data )
56
+ @touched = true
57
+ @seen_id = 'foo'
58
+ end
59
+ end
60
+
40
61
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: mooconfig
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.2
5
+ version: 0.1.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - ronbee
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-29 00:00:00 Z
13
+ date: 2011-07-31 00:00:00 Z
14
14
  dependencies: []
15
15
 
16
16
  description: Keeping and managing configuration via MongoDB. Light implementation.