zoo-service-discovery 1.1.1 → 1.2.0

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDJmYzA2YWEzMmM5NDQxYmUwZTM4Nzc2ODE0OWZhMmIxNzJhYmIzNw==
4
+ YzIwMThkMjJlOTZiODViMzAwNzNjYzM1ZjI5YTk3Y2UxYzhjODczNg==
5
5
  data.tar.gz: !binary |-
6
- MDRkMDc2ODlkMGRlNDg0MjNjYjU4NzYzNzk3OTE4ZTBjOTJhZjQ0Zg==
7
- !binary "U0hBNTEy":
6
+ OTVhNjZkOGMxNmVmMDcxZjhmY2ZlOGRhMTE4YTlkOTEwMmJlNTZiOQ==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MmQxMDY5Y2QzN2I3NWQ3NTBkNGNjM2RjZTIxOGYzNDc2ZDllYWQ4OGIyZGNh
10
- YzE3YmRkN2I1NmVmMzU5ZmJkY2ZmOGU2YTc5Y2Q0MzNlYzk5NjNhNTIyNjk2
11
- MWIxMTVkYWYxYWFkZDQ3OTZhMWEzMTE3ZmVjMjE5YmU1NTFkNzg=
9
+ Yjc3Y2MyN2IyMTY2ZWZhYzE2NmIzYzQ5ODg1NDQzYmIyYzM2YjY1YWYzYzlj
10
+ YTRhMmY4MjViYjkyOGIyZGM0MTY0YzZiOTk3MDcwNWU2ZjI1MmQyNmY4MjUx
11
+ OWMyNzEzMmU3NzFhYjZjYjRkOTViNWM2YmY3NTE3YTQzOTMzYmU=
12
12
  data.tar.gz: !binary |-
13
- ZTFlMmZmMTQzZTBkNGQ2NDllMGYxNzc2ZjcwMWUxN2ZlNTdmZmQxNDU2MjI0
14
- ZmNmN2M3MmMwMTYwODg5MDYxYjk0MjE5YTI4N2Y2ZDNmNWRjNTdmM2JlOThi
15
- OTNkYTFlM2ZiMWYzMzIzYTU0NzVhOTdmMjBmMTMzYTFmYWFkMmQ=
13
+ Zjg2OWMzMjExYzk3ZDc2NjA2ZTAwMGM1ZDg3MDYwZDE0NGJhNTE2ZDNiM2Vi
14
+ OWMwMWJkN2E1NTk3OGMzZjMxYTk0YjdkZGMxODc0YTBjNTM5NGQ1NzI2ZjI4
15
+ ODVlNjYyMWE5MzIzZGExOGU5OTFiMWQ0ZjYxNTUyYzZiMWQ5NDk=
@@ -23,10 +23,19 @@ module ZooService
23
23
  # Returns +true+, if everything went OK, +false+ otherwise.
24
24
  def register_service(name, url)
25
25
  registration_block = create_registration_block(name, url)
26
- service_registration_blocks << registration_block
26
+ service_registration_blocks[name.to_sym] = registration_block
27
27
  registration_block.(zk)
28
28
  end
29
29
 
30
+ # :call-seq:
31
+ # unregister_service(name) => Boolean
32
+ #
33
+ # Unregisters all the instances of a well-known service with _name_.
34
+ def unregister_service(name)
35
+ service_registration_blocks.delete(name.to_sym)
36
+ zk.rm_rf("/services/#{name}")
37
+ end
38
+
30
39
  def reconnect
31
40
  @zk = nil
32
41
  zk
@@ -46,7 +55,7 @@ module ZooService
46
55
  # Stores the registration blocks that are rerun after reconnection to
47
56
  # the ZooKeeper.
48
57
  def service_registration_blocks
49
- @service_registration_blocks ||= [ ]
58
+ @service_registration_blocks ||= { }
50
59
  end
51
60
 
52
61
  # Returns a working instance of a ZooKeeper client.
@@ -54,7 +63,7 @@ module ZooService
54
63
  @zk ||= ZK.new(ENV['SERVICE_DISCOVERY_WELLKNOWN_ADDRESS'] || 'localhost:2181') do |zk|
55
64
  zk.on_connected do
56
65
  # Rerun all the registrations upon reconnection
57
- service_registration_blocks.each do |registration_block|
66
+ service_registration_blocks.values.each do |registration_block|
58
67
  registration_block.(zk)
59
68
  end
60
69
  end
@@ -64,4 +73,4 @@ module ZooService
64
73
  end
65
74
 
66
75
  Publication = defined?(PhusionPassenger) ? PublicationImpl.new(PhusionPassenger) : PublicationImpl.new
67
- end
76
+ end
@@ -12,8 +12,12 @@ describe "Discovered service URL" do
12
12
 
13
13
  context "when service is registered" do
14
14
 
15
+ let(:publication) {
16
+ ZooService::PublicationImpl.new
17
+ }
18
+
15
19
  let!(:service) {
16
- ZooService::PublicationImpl.new.register_service("service", real_service_url)
20
+ publication.register_service("service", real_service_url)
17
21
  "service"
18
22
  }
19
23
 
@@ -25,6 +29,12 @@ describe "Discovered service URL" do
25
29
  should == nil # check that it cannot be discovered
26
30
  end
27
31
 
32
+ it "should be nil if we then unregister the service" do
33
+ sleep 0.5
34
+ publication.unregister_service(service)
35
+ should == nil
36
+ end
37
+
28
38
  end
29
39
 
30
40
  context "when service is not registered" do
@@ -37,4 +47,4 @@ describe "Discovered service URL" do
37
47
 
38
48
  end
39
49
 
40
- end
50
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zoo-service-discovery
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Druzhinin <andrey.druginin@gmail.com>
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-12-27 00:00:00.000000000 Z
13
+ date: 2014-02-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: zk
@@ -32,6 +32,7 @@ executables: []
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
+ - README.md
35
36
  - lib/zoo-service-discovery.rb
36
37
  - lib/zoo_service/discovery.rb
37
38
  - lib/zoo_service/publication.rb
@@ -40,7 +41,6 @@ files:
40
41
  - spec/features/passenger_spec.rb
41
42
  - spec/spec_helper.rb
42
43
  - spec/support/zookeeper_runner.rb
43
- - README.md
44
44
  homepage: http://uniqsystems.ru/
45
45
  licenses: []
46
46
  metadata: {}
@@ -60,9 +60,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
60
  version: '0'
61
61
  requirements: []
62
62
  rubyforge_project:
63
- rubygems_version: 2.0.7
63
+ rubygems_version: 2.2.1
64
64
  signing_key:
65
65
  specification_version: 4
66
66
  summary: ZooKeeper service discovery gem
67
67
  test_files: []
68
- has_rdoc: