gotime-cassandra_object 2.3.4 → 2.3.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +42 -0
- data/gotime-cassandra_object.gemspec +3 -4
- data/lib/cassandra_object.rb +3 -2
- data/lib/cassandra_object/callbacks.rb +1 -1
- data/lib/cassandra_object/finder_methods.rb +2 -3
- data/lib/cassandra_object/identity/abstract_key_factory.rb +0 -10
- data/lib/cassandra_object/identity/custom_key_factory.rb +0 -8
- data/lib/cassandra_object/identity/natural_key_factory.rb +0 -4
- data/lib/cassandra_object/identity/uuid_key_factory.rb +0 -5
- data/lib/cassandra_object/validations.rb +1 -1
- data/test/callbacks_test.rb +47 -0
- data/test/test_helper.rb +3 -4
- metadata +11 -9
data/README.rdoc
CHANGED
@@ -1,2 +1,44 @@
|
|
1
1
|
== Cassandra Object
|
2
2
|
|
3
|
+
Cassandra Object uses ActiveModel to mimic much of the behavior in ActiveRecord.
|
4
|
+
|
5
|
+
|
6
|
+
== Defining Models
|
7
|
+
|
8
|
+
class Widget < CassandraObject::Base
|
9
|
+
key :uuid
|
10
|
+
attribute :name, type: :string
|
11
|
+
attribute :description, type: :string
|
12
|
+
attribute :price, type: :integer
|
13
|
+
|
14
|
+
validates :name, presence: :true
|
15
|
+
|
16
|
+
before_create do
|
17
|
+
self.description = "#{name} is the best product ever"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
== Creating and updating records
|
22
|
+
|
23
|
+
Cassandra Object has equivalent methods as ActiveRecord:
|
24
|
+
|
25
|
+
widget = Widget.new
|
26
|
+
widget.valid?
|
27
|
+
widget = Widget.create(name: 'Acme', price: 100)
|
28
|
+
widget.update_attribute(:price, 1200)
|
29
|
+
widget.update_attributes(price: 1200, name: 'Acme Corporation')
|
30
|
+
widget.attributes = {price: 300}
|
31
|
+
widget.price_was
|
32
|
+
widget.save
|
33
|
+
widget.save!
|
34
|
+
|
35
|
+
== Finding records
|
36
|
+
|
37
|
+
widget = Widget.find(uuid)
|
38
|
+
widget = Widget.first
|
39
|
+
widgets = Widget.all
|
40
|
+
Widget.find_each do |widget|
|
41
|
+
...
|
42
|
+
end
|
43
|
+
|
44
|
+
CQL is currently not supported
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'gotime-cassandra_object'
|
5
|
-
s.version = '2.3.
|
5
|
+
s.version = '2.3.5'
|
6
6
|
s.description = 'Cassandra ActiveModel'
|
7
7
|
s.summary = 'Cassandra ActiveModel'
|
8
8
|
|
@@ -18,9 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
19
|
s.require_paths = ['lib']
|
20
20
|
|
21
|
-
s.add_runtime_dependency('
|
21
|
+
s.add_runtime_dependency('activemodel', "~> 3.0")
|
22
22
|
s.add_runtime_dependency('cassandra', "~> 0.11.3")
|
23
23
|
|
24
24
|
s.add_development_dependency('bundler', "~> 1.0.0")
|
25
|
-
end
|
26
|
-
|
25
|
+
end
|
data/lib/cassandra_object.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
require '
|
1
|
+
require 'active_support/all'
|
2
|
+
require 'active_model'
|
2
3
|
|
3
4
|
module CassandraObject
|
4
5
|
extend ActiveSupport::Autoload
|
@@ -46,4 +47,4 @@ module CassandraObject
|
|
46
47
|
end
|
47
48
|
end
|
48
49
|
|
49
|
-
require 'cassandra_object/railtie'
|
50
|
+
require 'cassandra_object/railtie' if defined?(Rails)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module CassandraObject
|
2
2
|
module FinderMethods
|
3
3
|
extend ActiveSupport::Concern
|
4
|
+
|
4
5
|
module ClassMethods
|
5
6
|
def find(key)
|
6
7
|
if !parse_key(key)
|
@@ -39,9 +40,7 @@ module CassandraObject
|
|
39
40
|
|
40
41
|
ids = ids.compact.map(&:to_s).uniq
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
results.size <= 1 && !expects_array ? results.first : results
|
43
|
+
multi_get(ids).values.compact
|
45
44
|
end
|
46
45
|
|
47
46
|
private
|
@@ -20,16 +20,6 @@ module CassandraObject
|
|
20
20
|
def parse(string)
|
21
21
|
raise NotImplementedError, "#{self.class.name}#parse isn't implemented."
|
22
22
|
end
|
23
|
-
|
24
|
-
|
25
|
-
# create should create a new key object from the cassandra format.
|
26
|
-
#
|
27
|
-
# @param [String] the result of calling key.to_s
|
28
|
-
# @return [CassandraObject::Identity::Key] the key
|
29
|
-
#
|
30
|
-
def create(string)
|
31
|
-
raise NotImplementedError, "#{self.class.name}#create isn't implemented."
|
32
|
-
end
|
33
23
|
end
|
34
24
|
end
|
35
25
|
end
|
@@ -36,14 +36,6 @@ module CassandraObject
|
|
36
36
|
def next_key(object)
|
37
37
|
CustomKey.new(object.send(@method))
|
38
38
|
end
|
39
|
-
|
40
|
-
def parse(paramized_key)
|
41
|
-
CustomKey.new(paramized_key)
|
42
|
-
end
|
43
|
-
|
44
|
-
def create(paramized_key)
|
45
|
-
CustomKey.new(paramized_key)
|
46
|
-
end
|
47
39
|
end
|
48
40
|
end
|
49
41
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class CassandraObject::CallbacksTest < CassandraObject::TestCase
|
4
|
+
class TestIssue < CassandraObject::Base
|
5
|
+
self.column_family = 'Issues'
|
6
|
+
key :uuid
|
7
|
+
attribute :description, type: :string
|
8
|
+
|
9
|
+
%w(after_save after_create after_update after_destroy).each do |method|
|
10
|
+
send(method) do
|
11
|
+
callback_history << method
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset_callback_history
|
16
|
+
@callback_history = []
|
17
|
+
end
|
18
|
+
|
19
|
+
def callback_history
|
20
|
+
@callback_history ||= []
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
test 'create' do
|
25
|
+
issue = TestIssue.create
|
26
|
+
|
27
|
+
assert_equal ['after_create', 'after_save'], issue.callback_history
|
28
|
+
end
|
29
|
+
|
30
|
+
test 'update' do
|
31
|
+
issue = TestIssue.create
|
32
|
+
issue.reset_callback_history
|
33
|
+
|
34
|
+
issue.update_attribute :description, 'foo'
|
35
|
+
|
36
|
+
assert_equal ['after_update', 'after_save'], issue.callback_history
|
37
|
+
end
|
38
|
+
|
39
|
+
test 'destroy' do
|
40
|
+
issue = TestIssue.create
|
41
|
+
issue.reset_callback_history
|
42
|
+
|
43
|
+
issue.destroy
|
44
|
+
|
45
|
+
assert_equal ['after_destroy'], issue.callback_history
|
46
|
+
end
|
47
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'test/unit'
|
4
4
|
require 'cassandra/0.8'
|
5
5
|
require 'cassandra_object'
|
6
|
-
require 'rails/test_help'
|
7
6
|
|
8
7
|
class Issue < CassandraObject::Base
|
9
8
|
key :uuid
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gotime-cassandra_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-08-
|
13
|
+
date: 2011-08-11 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
requirement: &
|
16
|
+
name: activemodel
|
17
|
+
requirement: &2168989460 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '3.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2168989460
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: cassandra
|
28
|
-
requirement: &
|
28
|
+
requirement: &2168985520 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 0.11.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2168985520
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bundler
|
39
|
-
requirement: &
|
39
|
+
requirement: &2168984360 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,7 +44,7 @@ dependencies:
|
|
44
44
|
version: 1.0.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2168984360
|
48
48
|
description: Cassandra ActiveModel
|
49
49
|
email: gems@gotime.com
|
50
50
|
executables: []
|
@@ -117,6 +117,7 @@ files:
|
|
117
117
|
- test/attributes_test.rb
|
118
118
|
- test/base_test.rb
|
119
119
|
- test/batches_test.rb
|
120
|
+
- test/callbacks_test.rb
|
120
121
|
- test/connection_test.rb
|
121
122
|
- test/consistency_test.rb
|
122
123
|
- test/finder_methods_test.rb
|
@@ -165,6 +166,7 @@ test_files:
|
|
165
166
|
- test/attributes_test.rb
|
166
167
|
- test/base_test.rb
|
167
168
|
- test/batches_test.rb
|
169
|
+
- test/callbacks_test.rb
|
168
170
|
- test/connection_test.rb
|
169
171
|
- test/consistency_test.rb
|
170
172
|
- test/finder_methods_test.rb
|