sessionm-cassandra_object 2.2.14 → 2.2.16

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,7 @@ module CassandraObject
4
4
  extend ActiveSupport::Autoload
5
5
 
6
6
  autoload :Base
7
+ autoload :AsyncConnection
7
8
  autoload :Connection
8
9
  autoload :Attributes
9
10
  autoload :Dirty
@@ -0,0 +1,48 @@
1
+ module CassandraObject
2
+ module AsyncConnection
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ class_attribute :connection_spec
7
+
8
+ class_eval do
9
+ @@fiber_connections = {}
10
+ def self.connection()
11
+ @@fiber_connections[Fiber.current.object_id] ||=
12
+ begin
13
+ spec = connection_spec.dup
14
+
15
+ if EM.reactor_running?
16
+ require 'thrift_client/event_machine'
17
+ spec[:thrift].merge!(:transport => Thrift::EventMachineTransport,
18
+ :transport_wrapper => nil)
19
+ end
20
+
21
+ Cassandra.new(spec[:keyspace], spec[:servers], spec[:thrift])
22
+ end
23
+ end
24
+ def self.connection?() !!connection end
25
+
26
+ def connection
27
+ defined?(@connection) ? @connection : singleton_class.connection
28
+ end
29
+
30
+ def connection?
31
+ !!connection
32
+ end
33
+ end
34
+ end
35
+
36
+ module ClassMethods
37
+ DEFAULT_OPTIONS = {
38
+ servers: "127.0.0.1:9160",
39
+ thrift: {}
40
+ }
41
+ def establish_connection(spec)
42
+ spec.reverse_merge!(DEFAULT_OPTIONS)
43
+ spec[:thrift].symbolize_keys!
44
+ self.connection_spec = spec
45
+ end
46
+ end
47
+ end
48
+ end
@@ -30,7 +30,9 @@ module CassandraObject
30
30
  include ActiveModel::Conversion
31
31
  extend ActiveSupport::DescendantsTracker
32
32
 
33
- include Connection
33
+ #TODO: make the connection type configurable
34
+ include AsyncConnection
35
+ #include Connection
34
36
  include Consistency
35
37
  include Identity
36
38
  include Attributes
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'sessionm-cassandra_object'
5
- s.version = '2.2.14'
5
+ s.version = '2.2.16'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
 
metadata CHANGED
@@ -1,58 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sessionm-cassandra_object
3
- version: !ruby/object:Gem::Version
4
- version: 2.2.14
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 2
8
+ - 16
9
+ version: 2.2.16
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Michael Koziarski
9
13
  - gotime
10
14
  - sessionm
11
15
  autorequire:
12
16
  bindir: bin
13
17
  cert_chain: []
14
- date: 2011-08-04 00:00:00.000000000Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2011-08-12 00:00:00 -04:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
17
23
  name: rails
18
- requirement: &70124182833500 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
21
27
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: '3.0'
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 3
31
+ - 0
32
+ version: "3.0"
24
33
  type: :runtime
25
- prerelease: false
26
- version_requirements: *70124182833500
27
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
28
36
  name: cassandra
29
- requirement: &70124182832940 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ requirements:
32
40
  - - ~>
33
- - !ruby/object:Gem::Version
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 0
44
+ - 11
45
+ - 3
34
46
  version: 0.11.3
35
47
  type: :runtime
36
- prerelease: false
37
- version_requirements: *70124182832940
38
- - !ruby/object:Gem::Dependency
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
39
50
  name: bundler
40
- requirement: &70124182832160 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ requirements:
43
54
  - - ~>
44
- - !ruby/object:Gem::Version
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 1
58
+ - 0
59
+ - 0
45
60
  version: 1.0.0
46
61
  type: :development
47
- prerelease: false
48
- version_requirements: *70124182832160
62
+ version_requirements: *id003
49
63
  description: Cassandra ActiveModel
50
64
  email: klange@sessionm.com
51
65
  executables: []
66
+
52
67
  extensions: []
53
- extra_rdoc_files:
68
+
69
+ extra_rdoc_files:
54
70
  - README.markdown
55
- files:
71
+ files:
56
72
  - .gitignore
57
73
  - CHANGELOG
58
74
  - Gemfile
@@ -64,6 +80,7 @@ files:
64
80
  - lib/cassandra_object/associations.rb
65
81
  - lib/cassandra_object/associations/one_to_many.rb
66
82
  - lib/cassandra_object/associations/one_to_one.rb
83
+ - lib/cassandra_object/async_connection.rb
67
84
  - lib/cassandra_object/attributes.rb
68
85
  - lib/cassandra_object/base.rb
69
86
  - lib/cassandra_object/batches.rb
@@ -137,31 +154,41 @@ files:
137
154
  - test/types/time_type_test.rb
138
155
  - test/types/utf8_string_type_test.rb
139
156
  - test/validations_test.rb
157
+ has_rdoc: true
140
158
  homepage: http://github.com/sessionm/cassandra_object
141
159
  licenses: []
160
+
142
161
  post_install_message:
143
162
  rdoc_options: []
144
- require_paths:
163
+
164
+ require_paths:
145
165
  - lib
146
- required_ruby_version: !ruby/object:Gem::Requirement
147
- none: false
148
- requirements:
149
- - - ! '>='
150
- - !ruby/object:Gem::Version
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ segments:
171
+ - 1
172
+ - 9
173
+ - 2
151
174
  version: 1.9.2
152
- required_rubygems_version: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ! '>='
156
- - !ruby/object:Gem::Version
175
+ required_rubygems_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ segments:
180
+ - 1
181
+ - 3
182
+ - 5
157
183
  version: 1.3.5
158
184
  requirements: []
185
+
159
186
  rubyforge_project:
160
- rubygems_version: 1.8.6
187
+ rubygems_version: 1.3.6
161
188
  signing_key:
162
189
  specification_version: 3
163
190
  summary: Cassandra ActiveModel
164
- test_files:
191
+ test_files:
165
192
  - test/active_model_test.rb
166
193
  - test/base_test.rb
167
194
  - test/batches_test.rb