pools 0.0.3 → 0.0.7

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.
@@ -0,0 +1,32 @@
1
+ require 'pools'
2
+ require 'cassandra/0.7'
3
+
4
+ class Cassandra
5
+ class Pooled
6
+ include ::Pools::Pooled
7
+
8
+ def initialize(*args)
9
+ @cassandra_args = args.dup
10
+ super
11
+ end
12
+
13
+ def __connection
14
+ Cassandra.new(*@cassandra_args)
15
+ end
16
+
17
+ def __disconnect(client)
18
+ client.disconnect! if client
19
+ end
20
+
21
+ preparation_methods :login!, :disable_node_auto_discovery!
22
+
23
+ connection_methods :keyspace, :keyspaces, :servers, :schema,
24
+ :auth_request, :thrift_client_options, :thrift_client_class,
25
+ :insert, :remove, :count_columns, :multi_count_columns,
26
+ :get_columns, :multi_get_columns, :get, :multi_get, :exists?,
27
+ :get_range, :count_range, :batch, :schema_agreement?, :version,
28
+ :cluster_name, :ring, :partitioner, :truncate!, :clear_keyspace!,
29
+ :add_column_family, :drop_column_family, :rename_column_family,
30
+ :add_keyspace, :drop_keyspace, :rename_keyspace
31
+ end
32
+ end
@@ -219,6 +219,7 @@ module Pools
219
219
 
220
220
  def checkout_new_connection
221
221
  c = @pooled.__connection
222
+ @pooled.__prepare(c)
222
223
  @connections << c
223
224
  checkout_connection(c)
224
225
  end
@@ -4,10 +4,11 @@ require 'active_support/concern'
4
4
  module Pools
5
5
  module Pooled
6
6
  extend ActiveSupport::Concern
7
- attr_reader :connection_pool
7
+ attr_reader :connection_pool, :preparation_chain
8
8
 
9
9
  def initialize(*args)
10
10
  options = args.extract_options!
11
+ @preparation_chain = []
11
12
  @connection_pool = ConnectionPool.new(self, options)
12
13
  Pools.handler.add(@connection_pool, options[:pool_name])
13
14
  end
@@ -24,16 +25,28 @@ module Pools
24
25
  # Override in parent
25
26
  end
26
27
 
28
+ def __prepare(connection)
29
+ @preparation_chain.each { |args| connection.send(*args) }
30
+ end
31
+
27
32
  module ClassMethods
28
33
  def connection_methods(*methods)
29
34
  methods.each do |method|
30
- define_method(method) do |*params|
35
+ define_method(method) do |*params, &block|
31
36
  with_connection do |client|
32
- client.send(method, *params)
37
+ client.send(method, *params, &block)
33
38
  end
34
39
  end
35
40
  end
36
41
  end
42
+
43
+ def preparation_methods(*methods)
44
+ methods.each do |method|
45
+ define_method(method) do |*params|
46
+ @preparation_chain << ([method] + params)
47
+ end
48
+ end
49
+ end
37
50
  end
38
51
  end
39
52
  end
@@ -1,3 +1,4 @@
1
+ require 'pools'
1
2
  require 'redis'
2
3
 
3
4
  class Redis
metadata CHANGED
@@ -1,29 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pools
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 17
4
5
  prerelease:
5
- version: 0.0.3
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 7
10
+ version: 0.0.7
6
11
  platform: ruby
7
12
  authors:
8
- - Michael Rykov
13
+ - Michael Rykov
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-03-13 00:00:00 -08:00
18
+ date: 2011-05-22 00:00:00 -07:00
14
19
  default_executable:
15
20
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: activesupport
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: 3.0.5
25
- type: :runtime
26
- version_requirements: *id001
21
+ - !ruby/object:Gem::Dependency
22
+ name: activesupport
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 13
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 5
34
+ version: 3.0.5
35
+ type: :runtime
36
+ version_requirements: *id001
27
37
  description: |
28
38
  Generalized connection pooling
29
39
 
@@ -35,17 +45,18 @@ extensions: []
35
45
  extra_rdoc_files: []
36
46
 
37
47
  files:
38
- - README.md
39
- - Rakefile
40
- - LICENSE
41
- - lib/pools.rb
42
- - lib/pools/connection_pool.rb
43
- - lib/pools/handler.rb
44
- - lib/pools/middleware.rb
45
- - lib/pools/pooled.rb
46
- - lib/redis/pooled.rb
47
- - lib/redis/pooled_store.rb
48
- has_rdoc: true
48
+ - README.md
49
+ - Rakefile
50
+ - LICENSE
51
+ - lib/cassandra/pooled.rb
52
+ - lib/pools/connection_pool.rb
53
+ - lib/pools/handler.rb
54
+ - lib/pools/middleware.rb
55
+ - lib/pools/pooled.rb
56
+ - lib/pools.rb
57
+ - lib/redis/pooled.rb
58
+ - lib/redis/pooled_store.rb
59
+ has_rdoc: false
49
60
  homepage: http://github.com/rykov/pools
50
61
  licenses: []
51
62
 
@@ -53,23 +64,29 @@ post_install_message:
53
64
  rdoc_options: []
54
65
 
55
66
  require_paths:
56
- - lib
67
+ - lib
57
68
  required_ruby_version: !ruby/object:Gem::Requirement
58
69
  none: false
59
70
  requirements:
60
- - - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
63
77
  required_rubygems_version: !ruby/object:Gem::Requirement
64
78
  none: false
65
79
  requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 0
85
+ version: "0"
69
86
  requirements: []
70
87
 
71
88
  rubyforge_project:
72
- rubygems_version: 1.5.1
89
+ rubygems_version: 1.6.2
73
90
  signing_key:
74
91
  specification_version: 3
75
92
  summary: Generalized connection pooling