datastax_rails 2.0.18 → 2.1.23

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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/config/solrconfig.xml.erb +7 -7
  3. data/lib/datastax_rails/associations/collection_association.rb +4 -4
  4. data/lib/datastax_rails/associations/has_many_association.rb +1 -1
  5. data/lib/datastax_rails/attribute_methods/dirty.rb +6 -0
  6. data/lib/datastax_rails/attribute_methods/primary_key.rb +9 -1
  7. data/lib/datastax_rails/attribute_methods/read.rb +2 -2
  8. data/lib/datastax_rails/attribute_methods/typecasting.rb +4 -7
  9. data/lib/datastax_rails/attribute_methods.rb +25 -0
  10. data/lib/datastax_rails/autosave_association.rb +3 -3
  11. data/lib/datastax_rails/base.rb +33 -11
  12. data/lib/datastax_rails/column.rb +25 -15
  13. data/lib/datastax_rails/connection.rb +1 -1
  14. data/lib/datastax_rails/cql/base.rb +31 -19
  15. data/lib/datastax_rails/cql/select.rb +2 -2
  16. data/lib/datastax_rails/dynamic_model.rb +1 -1
  17. data/lib/datastax_rails/errors.rb +3 -0
  18. data/lib/datastax_rails/instrumentation/controller_runtime.rb +52 -0
  19. data/lib/datastax_rails/instrumentation/log_subscriber.rb +92 -0
  20. data/lib/datastax_rails/instrumentation.rb +4 -0
  21. data/lib/datastax_rails/persistence.rb +49 -17
  22. data/lib/datastax_rails/railtie.rb +7 -0
  23. data/lib/datastax_rails/reflection.rb +16 -12
  24. data/lib/datastax_rails/relation/batches.rb +1 -1
  25. data/lib/datastax_rails/relation/finder_methods.rb +5 -5
  26. data/lib/datastax_rails/relation/modification_methods.rb +11 -26
  27. data/lib/datastax_rails/relation/search_methods.rb +10 -11
  28. data/lib/datastax_rails/relation.rb +81 -50
  29. data/lib/datastax_rails/scoping.rb +1 -1
  30. data/lib/datastax_rails/serialization.rb +10 -6
  31. data/lib/datastax_rails/serializers/xml_serializer.rb +3 -1
  32. data/lib/datastax_rails/tasks/ds.rake +25 -26
  33. data/lib/datastax_rails/timestamps.rb +1 -1
  34. data/lib/datastax_rails/types/dynamic_set.rb +4 -0
  35. data/lib/datastax_rails/version.rb +1 -1
  36. data/lib/datastax_rails/wide_storage_model.rb +3 -1
  37. data/lib/datastax_rails.rb +1 -0
  38. data/spec/datastax_rails/attribute_methods/read_spec.rb +33 -0
  39. data/spec/datastax_rails/attribute_methods/typecasting_spec.rb +25 -0
  40. data/spec/datastax_rails/base_spec.rb +1 -1
  41. data/spec/datastax_rails/callbacks_spec.rb +6 -0
  42. data/spec/datastax_rails/column_spec.rb +20 -0
  43. data/spec/datastax_rails/cql/base_spec.rb +1 -1
  44. data/spec/datastax_rails/cql/select_spec.rb +7 -1
  45. data/spec/datastax_rails/persistence_spec.rb +22 -3
  46. data/spec/datastax_rails/relation/finder_methods_spec.rb +13 -0
  47. data/spec/datastax_rails/relation/search_methods_spec.rb +37 -12
  48. data/spec/datastax_rails/serialization_spec.rb +17 -0
  49. data/spec/dummy/log/development.log +0 -24195
  50. data/spec/dummy/log/test.log +20 -15610
  51. data/spec/factories/hobbies.rb +1 -0
  52. data/spec/factories/jobs.rb +7 -0
  53. data/spec/factories/people.rb +1 -0
  54. data/spec/factories/person_roles.rb +7 -0
  55. data/spec/factories/roles.rb +6 -0
  56. data/spec/factories/uuid_keys.rb +6 -0
  57. data/spec/feature/associations_spec.rb +26 -0
  58. data/spec/support/models.rb +82 -0
  59. metadata +19 -4
  60. data/spec/dummy/log/production.log +0 -2
@@ -1,5 +1,6 @@
1
1
  FactoryGirl.define do
2
2
  factory(:hobby) do
3
+ uuid_key
3
4
  name 'Biking'
4
5
  complexity 2.0
5
6
  end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory(:job) do
3
+ uuid_key
4
+ person
5
+ sequence(:position_number)
6
+ end
7
+ end
@@ -1,5 +1,6 @@
1
1
  FactoryGirl.define do
2
2
  factory(:person) do
3
3
  name 'John'
4
+ uuid_key
4
5
  end
5
6
  end
@@ -0,0 +1,7 @@
1
+ FactoryGirl.define do
2
+ factory(:person_role) do
3
+ person
4
+ role
5
+ uuid_key
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory(:role) do
3
+ name 'ADMIN'
4
+ uuid_key
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ trait(:uuid_key) do
3
+ id { ::Cql::TimeUuid::Generator.new.next }
4
+ created_at { Time.now }
5
+ end
6
+ end
@@ -0,0 +1,26 @@
1
+ # This spec is used for association tests that don't necessarily fit in a single type
2
+ require 'spec_helper'
3
+
4
+ describe DatastaxRails::Base do
5
+ context 'associations' do
6
+ context 'many-to-many joins' do
7
+ let(:person) { create(:person) }
8
+ let(:role) { create(:role) }
9
+ let(:role2) { create(:role, name: 'GUEST') }
10
+
11
+ before do
12
+ create(:person_role, person: person, role: role)
13
+ create(:person_role, person: person, role: role2)
14
+ Person.commit_solr
15
+ Role.commit_solr
16
+ PersonRole.commit_solr
17
+ DatastaxRails::Base.log_solr_queries = true
18
+ DatastaxRails::Base.log_cql_queries = true
19
+ end
20
+
21
+ it 'collects the far-side records' do
22
+ expect(Role.find(person.person_roles.map(&:role_id)).compact).to eq([role, role2])
23
+ end
24
+ end
25
+ end
26
+ end
@@ -4,6 +4,7 @@ class Person < DatastaxRails::Base
4
4
  has_one :job
5
5
  has_many :cars, dependent: :destroy
6
6
  has_and_belongs_to_many :hobbies
7
+ has_many :person_roles, dependent: :destroy
7
8
 
8
9
  uuid :id
9
10
  text :name, sortable: true
@@ -94,6 +95,87 @@ class Default < DatastaxRails::Base
94
95
  boolean :bool, default: true
95
96
  boolean :bool2, default: false
96
97
  boolean :bool3
98
+ integer :version, default: 1
99
+ float :complexity, default: 0.0
100
+ uuid :previous_id, default: '00000000-0000-0000-0000-000000000000'
101
+ date :epoch, default: Date.parse('1970-01-01')
102
+ datetime :epoch2, default: Time.parse('1970-01-01 00:00:00')
103
+ map :m
104
+ map :m2, default: { 'test' => 'string' }
105
+ set :s
106
+ set :s2, default: ['unique string']
107
+ list :l
108
+ list :l2, default: ['ordered string']
109
+ end
110
+
111
+ class Role < DatastaxRails::Base
112
+ self.column_family = 'roles'
113
+
114
+ has_many :person_roles, dependent: :destroy
115
+
116
+ uuid :id
117
+ string :name
118
+ timestamps
119
+ end
120
+
121
+ class PersonRole < DatastaxRails::Base
122
+ self.column_family = 'person_roles'
123
+
124
+ belongs_to :person
125
+ belongs_to :role
126
+
127
+ uuid :id
128
+ uuid :person_id
129
+ uuid :role_id
130
+ timestamps
131
+ end
132
+
133
+ class CollectionOverride < DatastaxRails::Base
134
+ self.column_family = 'collection_overrides'
135
+
136
+ uuid :id
137
+ list :list1
138
+ list :list2
139
+ set :set1
140
+ set :set2
141
+ map :map1
142
+ map :map2
143
+
144
+ def list1
145
+ read_attribute(:list1).tap do |l|
146
+ l.each(&:upcase!)
147
+ end
148
+ end
149
+
150
+ def list2
151
+ read_attribute(:list2).map(&:upcase)
152
+ end
153
+
154
+ def set1
155
+ read_attribute(:set1).tap do |s|
156
+ s.each(&:upcase!)
157
+ end
158
+ end
159
+
160
+ def set2
161
+ read_attribute(:set2).map(&:upcase).to_set
162
+ end
163
+
164
+ def map1
165
+ read_attribute(:map1).tap do |m|
166
+ m.each { |k, v| m[k] = v.upcase }
167
+ end
168
+ end
169
+
170
+ def map2
171
+ ret = {}
172
+ read_attribute(map2).each do |k, v|
173
+ ret[k] = v.upcase
174
+ end
175
+ ret
176
+ end
177
+
178
+ timestamps
97
179
  end
98
180
 
99
181
  class CoreMetadata < DatastaxRails::DynamicModel
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datastax_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.18
4
+ version: 2.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason M. Kusar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-12 00:00:00.000000000 Z
11
+ date: 2014-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -231,6 +231,9 @@ files:
231
231
  - lib/datastax_rails/errors.rb
232
232
  - lib/datastax_rails/grouped_collection.rb
233
233
  - lib/datastax_rails/inheritance.rb
234
+ - lib/datastax_rails/instrumentation.rb
235
+ - lib/datastax_rails/instrumentation/controller_runtime.rb
236
+ - lib/datastax_rails/instrumentation/log_subscriber.rb
234
237
  - lib/datastax_rails/locale/en.yml
235
238
  - lib/datastax_rails/payload_model.rb
236
239
  - lib/datastax_rails/persistence.rb
@@ -272,6 +275,7 @@ files:
272
275
  - spec/datastax_rails/associations/collection_association_spec.rb
273
276
  - spec/datastax_rails/associations/has_many_association_spec.rb
274
277
  - spec/datastax_rails/associations_spec.rb
278
+ - spec/datastax_rails/attribute_methods/read_spec.rb
275
279
  - spec/datastax_rails/attribute_methods/typecasting_spec.rb
276
280
  - spec/datastax_rails/attribute_methods_spec.rb
277
281
  - spec/datastax_rails/autosave_association_spec.rb
@@ -297,6 +301,7 @@ files:
297
301
  - spec/datastax_rails/schema/migrator_spec.rb
298
302
  - spec/datastax_rails/schema/solr_spec.rb
299
303
  - spec/datastax_rails/scoping/default_spec.rb
304
+ - spec/datastax_rails/serialization_spec.rb
300
305
  - spec/datastax_rails/types/dynamic_list_spec.rb
301
306
  - spec/datastax_rails/types/dynamic_map_spec.rb
302
307
  - spec/datastax_rails/types/dynamic_set_spec.rb
@@ -334,7 +339,6 @@ files:
334
339
  - spec/dummy/db/test.sqlite3
335
340
  - spec/dummy/ks/schema.json
336
341
  - spec/dummy/log/development.log
337
- - spec/dummy/log/production.log
338
342
  - spec/dummy/log/test.log
339
343
  - spec/dummy/public/404.html
340
344
  - spec/dummy/public/422.html
@@ -343,7 +347,12 @@ files:
343
347
  - spec/dummy/script/rails
344
348
  - spec/factories/audit_logs.rb
345
349
  - spec/factories/hobbies.rb
350
+ - spec/factories/jobs.rb
346
351
  - spec/factories/people.rb
352
+ - spec/factories/person_roles.rb
353
+ - spec/factories/roles.rb
354
+ - spec/factories/uuid_keys.rb
355
+ - spec/feature/associations_spec.rb
347
356
  - spec/feature/dynamic_fields_spec.rb
348
357
  - spec/feature/overloaded_tables_spec.rb
349
358
  - spec/spec.opts
@@ -392,7 +401,9 @@ test_files:
392
401
  - spec/datastax_rails/schema/migrator_spec.rb
393
402
  - spec/datastax_rails/schema/solr_spec.rb
394
403
  - spec/datastax_rails/validations/uniqueness_spec.rb
404
+ - spec/datastax_rails/serialization_spec.rb
395
405
  - spec/datastax_rails/attribute_methods/typecasting_spec.rb
406
+ - spec/datastax_rails/attribute_methods/read_spec.rb
396
407
  - spec/datastax_rails/cql/delete_spec.rb
397
408
  - spec/datastax_rails/cql/update_spec.rb
398
409
  - spec/datastax_rails/cql/base_spec.rb
@@ -414,13 +425,13 @@ test_files:
414
425
  - spec/datastax_rails/associations/belongs_to_association_spec.rb
415
426
  - spec/datastax_rails/callbacks_spec.rb
416
427
  - spec/feature/dynamic_fields_spec.rb
428
+ - spec/feature/associations_spec.rb
417
429
  - spec/feature/overloaded_tables_spec.rb
418
430
  - spec/spec.opts
419
431
  - spec/datastax_rails_spec.rb
420
432
  - spec/spec_helper.rb
421
433
  - spec/dummy/log/test.log
422
434
  - spec/dummy/log/development.log
423
- - spec/dummy/log/production.log
424
435
  - spec/dummy/Rakefile
425
436
  - spec/dummy/public/favicon.ico
426
437
  - spec/dummy/public/500.html
@@ -456,7 +467,11 @@ test_files:
456
467
  - spec/dummy/app/assets/javascripts/application.js
457
468
  - spec/dummy/ks/schema.json
458
469
  - spec/dummy/db/test.sqlite3
470
+ - spec/factories/uuid_keys.rb
459
471
  - spec/factories/hobbies.rb
460
472
  - spec/factories/people.rb
461
473
  - spec/factories/audit_logs.rb
474
+ - spec/factories/roles.rb
475
+ - spec/factories/person_roles.rb
476
+ - spec/factories/jobs.rb
462
477
  has_rdoc:
@@ -1,2 +0,0 @@
1
- Connecting to database specified by database.yml
2
- Connecting to database specified by database.yml