sessionm-cassandra_object 4.0.2 → 4.0.3
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 +4 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +5 -1
- data/config/database.yml +6 -0
- data/lib/cassandra_object.rb +1 -0
- data/lib/cassandra_object/arel.rb +16 -0
- data/lib/cassandra_object/attributes.rb +2 -0
- data/lib/cassandra_object/base.rb +5 -1
- data/sessionm-cassandra_object.gemspec +1 -1
- data/spec/cassandra_object/associations_spec.rb +17 -0
- data/spec/cassandra_object/base_spec.rb +6 -0
- data/spec/spec_helper.rb +7 -2
- data/spec/support/db/migrate/001_create_test_tables.rb +12 -0
- data/spec/support/models/issue.rb +3 -0
- data/spec/support/models/user.rb +3 -0
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cc26d22e02e21c2be4d61d54240bafffa24d411
|
4
|
+
data.tar.gz: a0d6ff6c258975e3eb271a374ca62ca91e7fabe6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13a8276f70d0a89537081a60577afd044e9f514f06bc1033a4d7f70db9ade605a4610e8a08d3545c48a43bac013c26278b8d7525eb6000738f2a58d0bff69fe2
|
7
|
+
data.tar.gz: e3f44b48c7f076a2ba30899b9ae551e9236a3a0b1e634b9575170bf0becc8bce0b1778fd3b9b6fbd60dfc429b3c359f0b17139b33bb6de3537d005eea1fa8309
|
data/Gemfile
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
source
|
1
|
+
source "http://rubygems.org"
|
2
2
|
|
3
3
|
gem 'activesupport', :require => 'active_support/all'
|
4
4
|
gem 'activerecord', :require => 'active_record'
|
5
5
|
|
6
6
|
gem 'simple_uuid', '0.2.2'
|
7
7
|
gem 'cassandra-driver', :require => 'cassandra'
|
8
|
+
gem 'mysql2'
|
8
9
|
|
9
10
|
group :test, :spec do
|
10
11
|
gem 'rspec'
|
11
12
|
gem "mocha"
|
13
|
+
gem "database_cleaner"
|
12
14
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
GEM
|
2
|
-
remote: http://
|
2
|
+
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
activemodel (4.2.1)
|
5
5
|
activesupport (= 4.2.1)
|
@@ -18,6 +18,7 @@ GEM
|
|
18
18
|
builder (3.2.2)
|
19
19
|
cassandra-driver (2.1.3)
|
20
20
|
ione (~> 1.2)
|
21
|
+
database_cleaner (1.4.1)
|
21
22
|
diff-lcs (1.2.5)
|
22
23
|
i18n (0.7.0)
|
23
24
|
ione (1.2.0)
|
@@ -28,6 +29,7 @@ GEM
|
|
28
29
|
minitest (5.6.1)
|
29
30
|
mocha (1.1.0)
|
30
31
|
metaclass (~> 0.0.1)
|
32
|
+
mysql2 (0.3.18)
|
31
33
|
rspec (3.2.0)
|
32
34
|
rspec-core (~> 3.2.0)
|
33
35
|
rspec-expectations (~> 3.2.0)
|
@@ -55,6 +57,8 @@ DEPENDENCIES
|
|
55
57
|
activerecord
|
56
58
|
activesupport
|
57
59
|
cassandra-driver
|
60
|
+
database_cleaner
|
58
61
|
mocha
|
62
|
+
mysql2
|
59
63
|
rspec
|
60
64
|
simple_uuid (= 0.2.2)
|
data/config/database.yml
ADDED
data/lib/cassandra_object.rb
CHANGED
@@ -0,0 +1,16 @@
|
|
1
|
+
# adds arel_table support for belongs_to relationships in ActiveRecord models
|
2
|
+
module CassandraObject
|
3
|
+
module Arel
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
class_methods do
|
7
|
+
def arel_table
|
8
|
+
@arel_table ||= ::Arel::Table.new(column_family, arel_engine)
|
9
|
+
end
|
10
|
+
|
11
|
+
def arel_engine
|
12
|
+
self
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -23,12 +23,15 @@ module CassandraObject
|
|
23
23
|
klass
|
24
24
|
end
|
25
25
|
|
26
|
-
|
26
|
+
def compute_type(*args)
|
27
|
+
ActiveRecord::Base.send :compute_type, *args
|
28
|
+
end
|
27
29
|
end
|
28
30
|
|
29
31
|
extend ActiveModel::Naming
|
30
32
|
include ActiveModel::Conversion
|
31
33
|
extend ActiveSupport::DescendantsTracker
|
34
|
+
extend ActiveRecord::Delegation::DelegateCache
|
32
35
|
|
33
36
|
include Configuration
|
34
37
|
include Connection
|
@@ -45,6 +48,7 @@ module CassandraObject
|
|
45
48
|
include FinderMethods
|
46
49
|
include Timestamps
|
47
50
|
include NestedAttributes
|
51
|
+
include Arel
|
48
52
|
|
49
53
|
attr_accessor :key, :schema_version, :association_cache
|
50
54
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CassandraObject::Associations do
|
4
|
+
context "belongs_to" do
|
5
|
+
it "should fetch the user record from the belongs_to relationship from a cassandra object" do
|
6
|
+
user = User.create! :position => 1
|
7
|
+
issue = Issue.create! :description => 'web site not working', :worth => 1.5, :user_id => user.id
|
8
|
+
expect(issue.user.id).to eq user.id
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should fetch the cassandra object from the belongs_to relationship from an active record object" do
|
12
|
+
issue = Issue.create! :description => 'web site not working', :worth => 1.5
|
13
|
+
user = User.create! :position => 1, :issue_id => issue.id
|
14
|
+
expect(user.issue.id).to eq issue.id
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -27,4 +27,10 @@ describe CassandraObject::Base do
|
|
27
27
|
issue3 = Issue.create! :description => 'button is disabled', :worth => 0.2
|
28
28
|
expect(Issue.find_with_ids(issue1.id, issue2.id).map(&:id).sort).to eq [issue1.id, issue2.id].sort
|
29
29
|
end
|
30
|
+
|
31
|
+
it "should be able to get all issues" do
|
32
|
+
issue1 = Issue.create! :description => 'web site not working', :worth => 1.5
|
33
|
+
issue2 = Issue.create! :description => 'button is disabled', :worth => 0.2
|
34
|
+
expect(Issue.find_with_ids([issue1.id, issue2.id]).map(&:id).sort).to eq [issue1.id, issue2.id].sort
|
35
|
+
end
|
30
36
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,8 +6,6 @@ require File.expand_path('../../config/environment', __FILE__)
|
|
6
6
|
|
7
7
|
Bundler.require :default, :test
|
8
8
|
|
9
|
-
Dir[BASE_DIR.join("spec/support/**/*.rb")].each { |f| require f }
|
10
|
-
|
11
9
|
KEYSPACE = 'cassandra_object_test'
|
12
10
|
|
13
11
|
CassandraObject::Adapters::CassandraDriver.new(CassandraObject::Base.connection_spec).cluster.tap do |cluster|
|
@@ -43,6 +41,13 @@ CQL
|
|
43
41
|
cluster.close
|
44
42
|
end
|
45
43
|
|
44
|
+
ActiveRecord::Base.configurations = YAML.load_file('config/database.yml')
|
45
|
+
ActiveRecord::Base.establish_connection ENV["RAILS_ENV"]
|
46
|
+
ActiveRecord::Base.logger = Logger.new(STDOUT)
|
47
|
+
ActiveRecord::Migrator.migrate('spec/support/db/migrate')
|
48
|
+
|
49
|
+
Dir[BASE_DIR.join("spec/support/**/*.rb")].each { |f| require f }
|
50
|
+
|
46
51
|
RSpec.configure do |config|
|
47
52
|
|
48
53
|
config.before(:each) do
|
@@ -1,10 +1,13 @@
|
|
1
1
|
class Issue < CassandraObject::Base
|
2
2
|
key :uuid
|
3
|
+
attribute :user_id, :type => :integer
|
3
4
|
attribute :description, :type => :string
|
4
5
|
attribute :worth, :type => :decimal, :precision => 100
|
5
6
|
attribute :name, :type => :string
|
6
7
|
before_validation :set_defaults, :on => :create
|
7
8
|
|
9
|
+
belongs_to :user
|
10
|
+
|
8
11
|
def set_defaults
|
9
12
|
self.name ||= 'default name'
|
10
13
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sessionm-cassandra_object
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.
|
4
|
+
version: 4.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Koziarski
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-05-
|
13
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Cassandra ActiveModel
|
16
16
|
email: doug@sessionm.com
|
@@ -31,10 +31,12 @@ files:
|
|
31
31
|
- Rakefile
|
32
32
|
- config/boot.rb
|
33
33
|
- config/cassandra.yml
|
34
|
+
- config/database.yml
|
34
35
|
- config/environment.rb
|
35
36
|
- lib/cassandra_object.rb
|
36
37
|
- lib/cassandra_object/adapters.rb
|
37
38
|
- lib/cassandra_object/adapters/cassandra_driver.rb
|
39
|
+
- lib/cassandra_object/arel.rb
|
38
40
|
- lib/cassandra_object/associations.rb
|
39
41
|
- lib/cassandra_object/associations/one_to_many.rb
|
40
42
|
- lib/cassandra_object/associations/one_to_one.rb
|
@@ -93,11 +95,14 @@ files:
|
|
93
95
|
- lib/cassandra_object/validations.rb
|
94
96
|
- script/console.rb
|
95
97
|
- sessionm-cassandra_object.gemspec
|
98
|
+
- spec/cassandra_object/associations_spec.rb
|
96
99
|
- spec/cassandra_object/base_spec.rb
|
97
100
|
- spec/spec_helper.rb
|
98
101
|
- spec/support/cassandra.rb
|
102
|
+
- spec/support/db/migrate/001_create_test_tables.rb
|
99
103
|
- spec/support/models/counter.rb
|
100
104
|
- spec/support/models/issue.rb
|
105
|
+
- spec/support/models/user.rb
|
101
106
|
- test/README
|
102
107
|
- test/active_model_test.rb
|
103
108
|
- test/attributes_test.rb
|
@@ -147,11 +152,14 @@ signing_key:
|
|
147
152
|
specification_version: 4
|
148
153
|
summary: Cassandra ActiveModel
|
149
154
|
test_files:
|
155
|
+
- spec/cassandra_object/associations_spec.rb
|
150
156
|
- spec/cassandra_object/base_spec.rb
|
151
157
|
- spec/spec_helper.rb
|
152
158
|
- spec/support/cassandra.rb
|
159
|
+
- spec/support/db/migrate/001_create_test_tables.rb
|
153
160
|
- spec/support/models/counter.rb
|
154
161
|
- spec/support/models/issue.rb
|
162
|
+
- spec/support/models/user.rb
|
155
163
|
- test/README
|
156
164
|
- test/active_model_test.rb
|
157
165
|
- test/attributes_test.rb
|