cellect-client 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c518a38534d81e84960fb603a85089268949d7ca
4
- data.tar.gz: ba71be03ab92b66cfd378dbb555c735c83cd4043
3
+ metadata.gz: 6cd2bca44b019223a6da43db439f1cf5cb5650c7
4
+ data.tar.gz: f2e7e6cd755aba1f96c734e7396507a0c910ec34
5
5
  SHA512:
6
- metadata.gz: decf62a6c9470b6975d2f11a06039e37794d7f8eb2175388143235e1a4e75e677b372ed2907f9a501561a48b68374c6d34e398c5f47025c56f5ee8711736d0a6
7
- data.tar.gz: bc56057cbe643cf9751095c5a01fa5f48d7fcfb1f815bfe1d85da034694d66286932d867b2111cba32e60ad213d8f4533958c891a2bcdda0dfd2d6993101082f
6
+ metadata.gz: 8501160197b8cd42a6293ef475f4050148b5db6cf28936185a0564cfa494f1c51d4341dcf913e3be0805b88119afe8909df8100af91dc117bd7a02e184ccfae9
7
+ data.tar.gz: 32a8a91403d0a50309e6de27be1ad68e299d1697d2becaa2b48cca2d1c0c9a3240c6529efee363f4141a164b58ff024771633266df76cfe2856e4885d3823604
@@ -9,8 +9,8 @@ module Cellect
9
9
  attr_accessor :connection, :_node_set
10
10
  end
11
11
 
12
- def self.node_set
13
- self._node_set ||= NodeSet.supervise
12
+ def self.node_set(zk_url=nil)
13
+ self._node_set ||= NodeSet.supervise(zk_url)
14
14
  _node_set.actors.first
15
15
  end
16
16
 
@@ -22,7 +22,11 @@ module Cellect
22
22
  node_set.nodes.values.sample
23
23
  end
24
24
 
25
- Client.node_set
26
- Client.connection = Connection.pool size: ENV.fetch('CELLECT_POOL_SIZE', 100).to_i
25
+ if defined?(::Rails)
26
+ require 'cellect/client/railtie'
27
+ else
28
+ Client.node_set
29
+ Client.connection = Connection.pool size: ENV.fetch('CELLECT_POOL_SIZE', 100).to_i
30
+ end
27
31
  end
28
32
  end
@@ -5,7 +5,7 @@ module Cellect
5
5
  class NodeSet < Cellect::NodeSet
6
6
  attr_accessor :nodes
7
7
 
8
- def initialize
8
+ def initialize(zk_url = nil)
9
9
  self.nodes = { }
10
10
  super
11
11
  end
@@ -0,0 +1,37 @@
1
+ module Cellect
2
+ module Client
3
+ class ConfigurationError < StandardError; end;
4
+
5
+ class CellectRailtie < Rails::Railtie
6
+ initializer 'cellect.connect_to_zookeeper' do
7
+ ensure_config_file
8
+ config = YAML.load_file config_file
9
+ ensure_config_environment config
10
+ config = config[Rails.env].symbolize_keys
11
+ ensure_config_url config
12
+
13
+ Client.node_set config[:zk_url]
14
+ Client.connection = Connection.pool size: config.fetch(:pool_size, 100)
15
+ end
16
+
17
+ def config_file
18
+ Rails.root.join 'config/cellect.yml'
19
+ end
20
+
21
+ def ensure_config_file
22
+ return if File.exists?(config_file)
23
+ raise ConfigurationError.new "No configuration file found. Create config/cellect.yml first"
24
+ end
25
+
26
+ def ensure_config_environment(yaml)
27
+ return if yaml[Rails.env].is_a?(Hash)
28
+ raise ConfigurationError.new "No configuration for #{ Rails.env } found"
29
+ end
30
+
31
+ def ensure_config_url(hash)
32
+ return if hash[:zk_url].present?
33
+ raise ConfigurationError.new "No Zookeeper URL provided for #{ Rails.env } environment"
34
+ end
35
+ end
36
+ end
37
+ end
@@ -7,7 +7,8 @@ module Cellect
7
7
 
8
8
  attr_accessor :zk, :state
9
9
 
10
- def initialize
10
+ def initialize(zk_url = nil)
11
+ @zk_url = zk_url
11
12
  self.state = :initializing
12
13
  after(0.001){ async.initialize_zk } # don't block waiting for ZK to connect
13
14
  end
@@ -28,7 +29,7 @@ module Cellect
28
29
  protected
29
30
 
30
31
  def zk_url
31
- ENV.fetch 'ZK_URL', 'localhost:2181'
32
+ @zk_url || ENV.fetch('ZK_URL', 'localhost:2181')
32
33
  end
33
34
 
34
35
  def setup
@@ -0,0 +1,17 @@
1
+ module Cellect
2
+ class NodeSet
3
+ class ZK
4
+ def initialize(*args)
5
+
6
+ end
7
+
8
+ def children(*args)
9
+ []
10
+ end
11
+
12
+ def method_missing(*args, &block)
13
+
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Cellect
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -62,10 +62,10 @@ module Cellect::Client
62
62
  end
63
63
 
64
64
  it 'should get subjects' do
65
- should_send action: :get, url: 'workflows/random?user_id=1&limit=10&group_id=1', to: 1
66
- connection.get_subjects host: 1, workflow_id: 'random', user_id: 1, limit: 10, group_id: 1
65
+ should_send action: :get, url: 'workflows/random?user_id=1&group_id=1&limit=10', to: 1
66
+ connection.get_subjects host: '1', workflow_id: 'random', user_id: 1, limit: 10, group_id: 1
67
67
  should_send action: :get, url: 'workflows/random?user_id=1', to: 1
68
- connection.get_subjects host: 1, workflow_id: 'random', user_id: 1
68
+ connection.get_subjects host: '1', workflow_id: 'random', user_id: 1
69
69
  end
70
70
  end
71
71
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cellect-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Parrish
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-23 00:00:00.000000000 Z
11
+ date: 2014-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -169,7 +169,9 @@ files:
169
169
  - lib/cellect/client.rb
170
170
  - lib/cellect/client/connection.rb
171
171
  - lib/cellect/client/node_set.rb
172
+ - lib/cellect/client/railtie.rb
172
173
  - lib/cellect/node_set.rb
174
+ - lib/cellect/testing.rb
173
175
  - lib/cellect/version.rb
174
176
  - log/.gitkeep
175
177
  - spec/client/connection_spec.rb